PHP正则表达式替换<pre>标签外的内容
有时候,我们需要替换指定标签外的内容,而保留标签里面的内容不替换。比如当我们要在浏览器中显示出编辑器显示的原始格式时、需要将普通换行符“\n\r、\n、、\r”,替换为html换行标签“<br/>”,而由于“<pre>”标签中的内容自动会保留原始格式,所以不需要替换。要带到此目的,可以用下面方法:
<?php /** * PHP 正则表达式替换指定标签外的内容 * 作者:爱E族: aiezu.com */ $content = <<<END 爱E族:aiezu.com 正常文本内容 需要将换行符替换成“br”换行符 <pre> 这是pre里面的内容 换行符不替换成“br” </pre> END; $content = preg_replace_callback("#(?:<pre>.+?</pre>)|(?:\n\r|\n|\r)#s", function( $match ) { if ( strpos($match[0], '<pre>') === 0 ) { return $match[0]; } return "<br/>\n"; }, $content); echo $content;输出结果:
爱E族:aiezu.com<br/> 正常文本内容<br/> 需要将换行符替换成“br”换行符<br/> <br/> <pre> 这是pre里面的内容 换行符不替换成“br” </pre>