我正在尝试用html ol标签替换代码的新行,以将代码显示为
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);
问题是ol标签没有在preg_replace()函数中循环,所以输出
1. Line 1
1. Line 2
1. Line 3
1. Line 4
代码有什么问题?
答案 0 :(得分: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
答案 1 :(得分:1)
保持在替换<ol start='1'>
之外,因为它必须只在生成的html中出现一次
echo "<ol start='1'>".preg_replace("/\n+([^\n]+)/","<li>$1</li>",$x)."</ol>";