2015-12-13 2 views
0

Я пытаюсь заменить новые строки кода с HTML ола тег для отображения кода какПеребор ол тег в preg_replace() функция

1. Line 1 
2. Line 2 
3. Line 3 
4. Line 4 

Вот мой PHP

$x="Line 1 
     Line 2 
     Line 3 
     Line 4"; 

echo preg_replace("/\n+([^\n]+)/","<ol start='1'><li>$1</li></ol>",$x); 

проблема заключается в том ол тег не зацикливание в preg_replace() функция, поэтому он выводит

1. Line 1 
1. Line 2 
1. Line 3 
1. Line 4 

Что не так с кодом?

ответ

2

Вы создаете умножить ol теги вместо обертывания ol вокруг функции preg_replace. Кроме того, можно упростить регулярное выражение с m modifier:

$x="Line 1 
     Line 2 
     Line 3 
     Line 4"; 

echo "<ol start='1'>" . preg_replace("/^(.*?)$/m", "<li>$1</li>", $x) . "</ol>"; 

альтернатива, если вы не хотите, завершающие символы новой строки просто использовать:

/^(.*?)\s?$/m 

Когда этот модификатор установлен, «начало строки »и« конец строки »соответствуют сразу после или непосредственно перед любой новой строкой в ​​строке темы, соответственно, а также в самом начале и в конце. Это эквивалентно модификатору Perl/m.

Источник: php.net

+0

спасибо за ответ, но ола тег до сих пор не зацикливание. 1 1 1 1, но я хочу 1 2 3 4 как новые строки – starkeen

+0

Спасибо alot dev-null, он работает. – starkeen

1

Хранить вне заменить <ol start='1'>, как это должно быть только один раз в результирующем HTML

echo "<ol start='1'>".preg_replace("/\n+([^\n]+)/","<li>$1</li>",$x)."</ol>"; 
Смежные вопросы