строка — Как избежать / обойти PHP WordWrap, удаляя пробелы

Для генератора iCal, над которым я работаю, мне нужно убедиться, что каждые 75 символов строка разбивается следующим образом:

$string = "This is a long text. I use this text to demonstrate the PHP wordwrap function.";
$newstring = wordwrap($string, 75, "\r\n ", TRUE);

echo($newstring);

Результат:

This is a long text. I use this text to demonstrate the PHP wordwrap
function.

iCal интерпретирует первый пробел (из параметра разрыва слова) как индикатор того, что свойство текста продолжается.

Функция переноса слов удаляет второй пробел (из строки). После декодирования содержимого iCal текст будет выглядеть следующим образом:

This is a long text. I use this text to demonstrate the PHP wordwrapfunction.

Как я могу обойти это? Я не хочу, чтобы пространство из строки (между «wordwrap» и «function») было удалено.

1

Решение

Я должен использовать chunk_split вместо. Это сохранит пространство, а также не будет пытаться обернуть пространство, которое мне не нужно.

$string = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaannnnnn";
$newstring = rtrim(chunk_split($string, 75, "\r\n "), "\r\n ");

echo($newstring);

Пространство сохранилось:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaannnnnn

rtrim также используется, как chunk_split всегда добавляет end,

Это не будет считать пространство внутри end, тем не мение. Так что, если есть несколько строк, на самом деле может быть 76 символов. Я изменил chunklen параметр до 74, так как это достаточно хорошо для моего случая использования.

0

Другие решения

Хорошо, при выполнении переноса по словам пропустите дополнительный пробел, чтобы пространство между переносом по тексту и функцией было сохранено.

Использовать этот

$newstring = wordwrap($string, 75, " \r\n", TRUE);

Вместо

$newstring = wordwrap($string, 75, "\r\n", TRUE);

Вывод до iCal:

This is a long text. I use this text to demonstrate the PHP wordwrap
function.

Вывод после iCal:

This is a long text. I use this text to demonstrate the PHP wordwrap function.
0

По вопросам рекламы [email protected]