Удалите новые строки из начала и конца строки в php, используя обрезку - PullRequest
0 голосов
/ 13 июля 2020

У меня создалось впечатление, что команда trim в PHP, если вы не укажете второй параметр, определяющий символы c, удалит не только пробелы, но и новые строки с начала ( и конец) строки.

Эта функция возвращает строку с удаленными пробелами в начале и в конце str. Без второго параметра trim () удаляет следующие символы:

"" (ASCII 32 (0x20)), обычный пробел. «\ t» (ASCII 9 (0x09)), табуляция. «\ n» (ASCII 10 (0x0A)), новая строка (перевод строки). "\ r" (ASCII 13 (0x0D)), возврат каретки. "\ 0" (ASCII 0 (0x00)), нулевой байт. "\ x0B" (ASCII 11 (0x0B)), вертикальная табуляция.

Однако я применяю его к строке, которая имеет несколько новых строк в начале, полученных из удаленного текста, и она оставляет следующее:

\u200b\n\nTHE TEXT I WANT STARTS HERE. I WANT TO GET RID OF EVERTHING BEFORE WORD THE

Причина, по которой я пытаюсь использовать обрезку, состоит в том, что я хочу сохранить новые строки и форматирование в середине текста, поскольку он может быть разбит на абзацы. Я просто хочу обрезать его по краям.

Я ошибаюсь, что обрезка должна удалять разрывы строк и новые строки в начале и в конце строки? Как правильно удалять новые строки, как указано выше?

1 Ответ

1 голос
/ 13 июля 2020

Добавьте символ ZERO LENGTH SPACE (\ u200b) в список символов, которые нужно вырезать, и тогда он будет работать так, как вы ожидаете.

$ws = " \t\n\r\0\x0B\u200b";
$s = trim
(
 "\u200b\n\nTHE TEXT I WANT STARTS HERE. I WANT TO GET RID OF EVERTHING BEFORE WORD THE",
 $ws
);
echo $s;

Может быть хорошей идеей добавить NO-BREAK SPACE символ (\ xA0) тоже.

...