替换Pre标签之间的帖子中的html实体

时间:2013-03-21 作者:Remko

我运行wordpressblog 使用语法荧光笔插件(Crayon). 该插件突出显示前置标记之间的代码,例如:

<pre class="lang:languageid" title="example">
some code
</pre>
Wordpress有时会替换字符,例如" & < > 使用代码中显示的html实体&quot; &amp; 我尝试了几个插件来防止这种情况,但它们(总是)不起作用。

有没有一种简单的方法可以批量编辑旧帖子并在pre 用字符替换标签?或者在显示器上使用替换功能并用其字符替换实体会更容易吗?

欢迎将来提出任何防止这种情况发生的建议(可能是扩展/修改蜡笔?)。

我通常使用Windows Live Writer撰写博客,但使用内置编辑器编辑帖子时也会出现这种行为。

3 个回复
最合适的回答,由SO网友:Remko 整理而成

这两个答案都不是完整的解决方案,似乎如果我将它们结合在一起,我就非常接近了(只需要修复替换零件)。来自@hasinhayder answer的正则表达式似乎在@nathanpowell建议的插件中运行良好。

无法分割点,common best practice 似乎是在你的答案中结合了这两个答案,并接受这一个。我希望这两个都可以?

答案是:

使用Search RegEx wordpress插件并使用regex表达式|<pre.*>(.*)</pre|isU 匹配pre标记中的html实体。

SO网友:Hasin Hayder

这个应该有用

add_filter( \'the_content\', \'pre_content_filter\', 0 );

function pre_content_filter( $content ) {
    return preg_replace_callback( \'|<pre.*>(.*)</pre|isU\' , \'convert_pre_entities\', $content );
}

function convert_pre_entities( $matches ) {
    return str_replace( $matches[1], html_entity_decode( $matches[1] ), $matches[0] );
}
让我知道

SO网友:Nathan Powell

在可视化编辑器中,WordPress会替换这些字符。如果您正在编写一组代码,请将其关闭,只在文本或HTML视图中写入/保存。

编辑:我刚刚意识到这个问题的“批量编辑”部分。我使用了一个可怕但功能强大的插件Search Regex 对于这类事情。

结束