【发布时间】:2016-05-04 22:34:10
【问题描述】:
我的 WP 帖子中有很多未格式化的文本;我尝试使用此代码:
function user_content_replace($content) {
return str_replace('.','.</p><p>',$content);
}
add_filter('the_content','user_content_replace', 99);
所以实际上我想用 PARAGRAPH 和 PERIOD (.</p><p>) 替换 PERIOD
但我在这里需要一点帮助:首先 - 这段代码替换了每个 DOT,所以我所有的永久链接、图像路径等都被 DOT 替换了,这很糟糕,在这种情况下 web 根本不起作用。
所以,我认为替换每三个 DOT 的解决方案对我来说都是救赎,所以不是每一个 DOT。
有什么想法吗?
感谢
编辑:
我更改了上面的代码并编辑了 wp-includes 文件夹中的核心 post-template.php 文件:
function the_content( $more_link_text = null, $strip_teaser = false) {
$content = get_the_content( $more_link_text, $strip_teaser );
$content = apply_filters( 'the_content', $content );
$content = preg_replace('/([^\\.]*\\.[^\\.]*\\.[^\\.]*){1}\\.([^\\.]*)/s', '$1.</p><p>$2',$content);
echo $content;
}
现在没关系,大部分文本语法正确,现在问题是上面的表达式改变了 IMAGES PATH,所以 something.com/wp-content/image.jpg 我有 - something.com/wp-content/image.jpg
对此有什么想法吗?
注意:
嗯,代码昨天工作,但今天不工作。代码没有任何改变,但它不起作用。有什么想法吗?
【问题讨论】:
-
失败的情况太多了,不值得这样改语法
-
@Dagon 好的,你还有什么建议吗?
-
谢谢,但是在 12 万个帖子上使用人类有点病态,你不觉得吗?无论如何,我征求程序员的意见,而不是文案经理 :)
-
一个想法:使用 HTML 解析器,然后只替换文本节点内容。
-
@IsmaelMiguel 你能详细说明一下吗?
标签: php string wordpress str-replace