rtrim (не дообрезает 1 символ)

StalkerClasses

Новичок
Делаю rtrim('StrokdTest','Test');
Но отдельные фразы функция почему-то обрезает не полностью - оставляя: "StrokdT".
С чем это может быть связано?
 

ksnk

прохожий
На всякий случай... rtrim обрезает не правую часть фразы, совпадающую со вторым параметром, а справа, все символы, встречающиеся во втором параметре. Так что rtrim('eeeeeeeeeeeeeTest','Test'); вернет пустую строку... Если символ Т в обоих строках один и тот же...
 
Последнее редактирование модератором:

AnrDaemon

Продвинутый новичок
@Фанат понимаю, хотелось схохмить, но по-моему проблема очевидна.
Если функция даёт неожиданный резальтат, то проблема либо в функции, либо в исходных данных.
Поскольку функция стандартная, проблема в ней маловероятна. Что тривиально подтверждается проверкой на первой попавшейся машине с PHP.
Ergo, проблема в исходных данных.
 

Фанат

oncle terrible
Команда форума
@Фанатпонимаю, хотелось схохмить
Понимаю, хотелось поумничать.
Но до ответа ksnk это еще было бы объяснимо, но вот после, когда тебе разжевали описанное в мануале оведение функции прямо тут - увы.
 

Фанат

oncle terrible
Команда форума
Что тут непонятного-то?
Блин, самая сложная функция в похапе. половина участников дискуссии не в состоянии осилить, что она делает
rtrim обрезает не правую часть фразы, совпадающую со вторым параметром, а убирает справа все символы, встречающиеся во втором параметре.
Символы. trim работает с символами. А не с целыми строками.
Ты используешь rtrim не по назначению. Делай через preg_replace();
 

StalkerClasses

Новичок
Что тут непонятного-то?
Блин, самая сложная функция в похапе. половина участников дискуссии не в состоянии осилить, что она делает

Символы. trim работает с символами. А не с целыми строками.
Ты используешь rtrim не по назначению. Делай через preg_replace();
Вот поэтому меня и удивляло всегда. Что 10 строк она правильно обрезала. А 1 из строк не правильно.
 

Фанат

oncle terrible
Команда форума
Ну потому что надо читать документацию, если функция "не работает".
Как по-втоему она образает переводы строк, если по умолчанию вызывается
Код:
trim ($str, " \t\n\r\0\x0B")
что - она будет обрезать только если в конце именно такая строка, а 1 пробел не уберет?
 

StalkerClasses

Новичок
У меня было 10 аналогичных строк.
Маша
Саша
Карина
Дарина
Полина
Марина
Золина
Эльвира
Карина
Зульфира

Во всех 9 буква "а" убирается.
А вот в одном имени нет.
 

Фанат

oncle terrible
Команда форума
Слушай, голову включать не пробовал? Логически помыслить? Ну так чисто для разнообразия. Не целый день же говнокодить не приходя в сознание?
Если буква не убирается, значит либо это не буква а, либо не последний символ в строке
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Да просто пхп сломан, да и устарел, переходи на go
 

StalkerClasses

Новичок
Слушай, голову включать не пробовал? Логически помыслить? Ну так чисто для разнообразия. Не целый день же говнокодить не приходя в сознание?
Если буква не убирается, значит либо это не буква а, либо не последний символ в строке
Это везде буква а и везде последний символ, т.к. строку также прогонял перед этим через trim().
 

Yoskaldyr

"Спамер"
Партнер клуба
@StalkerClasses тебе уже несколько раз расписали что не так, попробуй всетаки не просто прочитать, но и понять, что тебе написали:
1. Использование rtrim не по назначению
2. Проблема с данными, а именно не та буква а в конце (может латинская a, может в конце какой-либо юникод символ нулевой длины и т.д. и т.п.)
 

Фанат

oncle terrible
Команда форума

StalkerClasses

Новичок
@StalkerClasses тебе уже несколько раз расписали что не так, попробуй всетаки не просто прочитать, но и понять, что тебе написали:
1. Использование rtrim не по назначению
2. Проблема с данными, а именно не та буква а в конце (может латинская a, может в конце какой-либо юникод символ нулевой длины и т.д. и т.п.)
Я же объяснил - что у меня есть 10 одинаковых названий класса. 9 обрезаются правильно, 1 нет .
 

StalkerClasses

Новичок
@StalkerClasses тебе уже несколько раз расписали что не так, попробуй всетаки не просто прочитать, но и понять, что тебе написали:
1. Использование rtrim не по назначению
Да почитав документацию - http://www.php.su/functions/?ltrim, теперь стало понятно. Что этот пример и то как делаю взял из каких-то бредовых примеров гуру интернета по удалению символов в конце строки. И как понял что ltrim и rtrim на это не заточены вовсе то что делаю.
 

Yoskaldyr

"Спамер"
Партнер клуба
9 обрезаются правильно, 1 нет .
читаем внимательно и пытаемся понять (хотя это наверное не дано...):
2. Проблема с данными, а именно не та буква а в конце (может латинская a, может в конце какой-либо юникод символ нулевой длины и т.д. и т.п.)
 
Сверху