PHP триммерная функция обрезать лишние символы? Зачем? - PullRequest
0 голосов
/ 09 января 2019

Как работает rtrim? У меня есть строка "4dbb3dca &". Я не уверен, как моя строка формируется. Я хочу позвонить rtrim('4dbb3dca&', '&')

- изменить: & может быть $amp; выпуск специальных символов

Но после моей строки 4dbb3dc.

Я ожидаю, что это будет 4dbb3dca.

Есть ли обходной путь? Я использовал &, но затем rtrim ничего не делает и возвращается начальная строка. Можно ли использовать rtrim в моей ситуации? Зависит ли это от версии php?

--- редактировать ---

после некоторых исследований я понял, что хочу: Я хочу удалить &, используя & в rtrim() функции. Это возможно?

Ответы [ 4 ]

0 голосов
/ 09 января 2019

То, как работает rtrim, удаляет последние символы во втором аргументе.

PHP разбил строку на символы и проверьте, есть ли у вас символы в конце строки.

если у вас есть два символа из списка символов, rtrim удалит оба

Например:

;&apm это будет тот же результат, что и &

если вы хотите удалить единственный символ амперсанда в конце строки используйте этот код: rtrim('4dbb3dca&','&');

, чтобы понять больше, вы можете прочитать об этом на php.net http://php.net/manual/en/function.rtrim.php

0 голосов
/ 09 января 2019

Q1 . Можно ли использовать rtrim в моей ситуации? Да , возможно использовать rtrim() в вашей ситуации.

Q2 . Зависит ли это от версии php? Нет

Вам просто нужно использовать echo rtrim('4dbb3dca&', '&');, а не &, потому что 2-й параметр rtrim работает, как показано ниже -

Вы также можете указать символов , которые вы хотите удалить, с помощью параметр character_mask. Просто перечислите все символов , которые вы хочу быть раздетым

DEMO: https://3v4l.org/anFIR

Если вы воспользуетесь приведенным ниже примером, вы получите тот же результат, потому что он попытается удалить все заданные символы с правой стороны заданной строки. Для Ex-

echo rtrim('4dbb3dca&;pm', '&');` // will also return 4dbb3dc
0 голосов
/ 09 января 2019

Похоже, вы пытаетесь удалить амперсанд с конца строки, возможно, в закодированном виде. rtrim не дает достаточного контроля, как вы видели, но вы можете сделать это с помощью preg_replace.

echo preg_replace('/&(amp;)?$/', '', $string);

Шаблон будет соответствовать амперсанду в конце строки, за которым может следовать amp;. 1006 *

0 голосов
/ 09 января 2019

Вторая строка, указанная вами в rtim(), содержит все дополнительные символы, которые вы хотите обрезать. Таким образом, обрезаемые символы: "&" и "a" (оба действительно включены во второй параметр вашего rtrim() вызова функции, "&amp").

Чтобы получить желаемый результат, вы должны вызвать rtrim() следующим образом:

rtrim('4dbb3dca&', '&')
...