以下代码未解析<br>
代码效果
$html="test<br>end";
preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
如何使用它进行换行?
编辑:
要求的结果是:
0 => 'test', 1 => 'end'
答案 0 :(得分:1)
您的示例输入字符串不需要正则表达式。
$html="test<br>end";
var_export(explode('<br>',$html));
输出:
array (
0 => 'test',
1 => 'end',
)
如果您要替换:请使用str_replace()
。
$html="test<br>end";
var_export(str_replace('<br>',"\n",$html));
输出:
'test
end'
如果你坚持使用preg_split()
,那么这就是我的建议:
$html="test<br>end";
var_export(preg_split('/<[^>]*>/',$html));
否定字符类的运行速度比.
(任何非换行符)快。请注意,这会匹配字符串中的所有标记(以及<
和>
之间的任何其他标记。)
...
如果我们仅定位<br>
和<br />
,那么模式可以是:~<br(?: /)?>~
。但现在我争先恐后地猜测问题是什么,因为重要问题没有得到解答。
答案 1 :(得分:0)
假设您还要按任何其他标记拆分,并且您的文字可能包含非拉丁字符,我建议:
u
),因此这适用于多字节(非ASCII)字符。 U
只会导致误解。将其保留,同时将(.*)
更改为(.*?)
以获得相同的效果。 <br>
,因此您需要删除PREG_SPLIT_DELIM_CAPTURE
标记,这实际上会强制<br>
进入结果。所以应用所有这些,我们得到:
$html="test<br>end";
$result = preg_split('/<(.*?)>/u', $html);
print_r($result); // Array( [0] => "test", [1] => "end" )