在字符串替换内容时去掉#038;

时间:2011-10-30 作者:Staffan Estberg

我正在尝试将一些字符串替换添加到\\u title()

function format_title($content) {
    $content = str_replace(\'&\',\'&<br>\', $content);
    $content = str_replace(\'!\',\'!<br>\', $content);
    return $content;
}
add_filter(\'the_title\',\'format_title\',11);
当我尝试替换安培数时,会得到一个额外的“#038;”在替换之后(ASCII表示与),我不确定为什么会发生这种情况(安全原因?)或者如何创建变通方法。我已尝试替换“&;”带“&;amp;”但没有效果。

目标是在标题的某些点添加换行符,以在排版中创建更好的流程。数据库和站点都有UTF8编码。

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

&#38; 本质上是的同义词&amp;. 在里面the_title 滤器wptexturize() 优先运行1 (重要!)并进行此替换。

所以当它到达你的format_title() 优先考虑11 - 而不是更换lone& 替换(并断开)块的符号&#38; 字符实体。

因此,您可以:

将功能移至优先级0 它将在纹理化之前运行11 但替换$#38; 而不仅仅是&

SO网友:Pradeep Prajapati

还有一个解决方案:-

wp-includes\\formatting.php >> esc_url ()  >>  comment the line <br> $url = str_replace( \'&amp;\', \'&#038;\', $url ); 
这对我有用。

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register