Удалить пробелы в конце каждой строчки, до переноса
https://regex101.com/r/PtkGM1/1
Не выходит, первый пустые строчки удалим, ок. Но как оставить те 2 пробела, в начале первой строчки с текстом?
[\s]+\n
Так я пытаюсь найти все пробелы которые есть перед переносом строчки. Как я понимаю, в данном случаи я удалю так же перенос в конце каждой строчки. Вопрос в том, как не удалять перенос строчки?
$tx = '
текст
текст
текст
текст
';
print_r("<div style='display: -webkit-box; white-space: pre-wrap;word-break: break-word;'>".preg_replace('#(^[\s\n]+|[\s\n]+$)#s', null, $tx)."</div>");
Как мне удалить пробелы в конце каждой строчки и при этом сохранить переносы?
Ответы (1 шт):
\s эквивалентно [\r\n\t\f\v ] и уже включает в себя перевод строки.
Когда выполняется замена то ограничитель \n для выбора пробелов так же удаляется.
Попробуйте использовать в выражении только горизонтальные \h пробельные символы и символ конца строки $:
\h+$
Либо использовать позитивный просмотр вперед на перенос строки или конец текста
\h+(?=\n|\Z)
Пример: regex101.com
UPD: Для preg_replace
$reg = '/\h+$/m';
$tx = '
текст
текст
текст
текст
';
$substr = "";
$result = preg_replace($reg, $substr, $tx);
echo $result;