Не совсем красиво, но идея, которая приходит на ум, заключается в следующем:
- взорвать строку, используя newline в качестве разделителя
- и взорвать массив, используя
</li><li>
между элементами:
Что можно перевести как-то так:
$new_string = '<li>' . implode('</li><li>', explode("\n", $old_string)) . '</li>';
(Да, плохая идея - не делайте этого, особенно если текстдлинный)
Другое решение, более чистое, было бы просто заменить символы новой строки в вашей строке на </li><li>
:
(переносрезультирующая строка внутри <li>
и </li>
, чтобы открыть / закрыть их)
$new_string = '<li>' . str_replace("\n", '</li><li>', $old_string) . '</li>';
С этой идеей, например, следующая часть кода:
$old_string = <<<STR
this is
an example
of a
string
STR;
$new_string = '<li>' . str_replace("\n", '</li><li>', $old_string) . '</li>';
var_dump($new_string);
Получил бы такой вывод:
string '<li>this is</li><li>an example</li><li>of a </li><li>string</li>' (length=64)