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>

0 个评论

要回复文章请先登录注册