在 MySQL 中用空格替换文本

在 MySQL 中用空格替换文本

我正在尝试在我的数据库中进行全局搜索替换,由于以下代码,数据库中有很多带有双回车符的文章:

<p> </p>

我想在我的 WordPress 博客中替换它,这样就不会出现......什么都没有,这样我就可以删除 CR。我已经在我的数据库中尝试过了

UPDATE wp_posts set post_content = replace (post_content,'<p> </p>','');

但不起作用。为什么?我是否必须添加特殊想法来考虑<p>和之间的空间</p>


嗯。Jon Angliss 和 Wim 的观点都很好。Jon,正如您可能猜到的那样,数据库中没有显示包含该文本字符串的条目。因此 post_content 字段中一定发生了一些事情。

Wim,著名的那个之前已经被替换了,但仍然有数百个帖子由于某种原因在 p 和 /p 标签之间存在差异。

我搜索了其中一篇帖子,发现其中有以下错误:

mysql> select *  from wp_posts where post_title like '%3DVisionLive%';

查看 wp_content 字段,这是帖子的一小部分:

Phil Eisler, responsable de la divisi?n 3D Vision.?</p>
<p>?</p>
<p>Este portal ser? por tanto

终端上没有显示西班牙语波浪符号(重音符号),并且 p 和 /p 标签之间没有空格,而是引号。我尝试替换<p>?</p>,但仍然没有结果。那里有一些字符(或几个),但我不知道如何发现。也许是我的终端的字符集,但我从 phpmyadmin 访问了数据库,在这种情况下,p 和 /p 之间有一个空格字符。很奇怪。


好吧,关于这个还有更多信息在尝试了几件事之后,我做出了这样的替换:

UPDATE wp_posts set post_content = replace (post_content,'&nbsp;',' ');

现在我的文章中出现了

<p> </p> 

而不是之前的字符串,它导致段落之间出现额外的 CR,看起来真的毫无用处,而且很差劲。所以我又回到了开始。我需要做的是用空字符或空格替换。

它是否必须带有 & 符号,在这种情况下,我应该使用   之类的东西或类似的东西吗?


嗯。Jon Angliss 和 Wim 的观点都很好。Jon,正如您可能猜到的那样,数据库中没有显示包含该文本字符串的条目。因此 post_content 字段中一定发生了一些事情。

Wim,著名的那个之前已经被替换了,但仍然有数百个帖子由于某种原因在 p 和 /p 标签之间存在差异。

我搜索了其中一篇帖子,发现其中有以下错误:

mysql> select *  from wp_posts where post_title like '%3DVisionLive%';

查看 wp_content 字段,这是帖子的一小部分:

Phil Eisler, responsable de la divisi?n 3D Vision.?</p>
<p>?</p>
<p>Este portal ser? por tanto

终端上没有显示西班牙语波浪符号(重音符号),并且 p 和 /p 标签之间没有空格,而是引号。我尝试替换<p>?</p>,但仍然没有结果。那里有一些字符(或几个),但我不知道如何发现。也许是我的终端的字符集,但我从 phpmyadmin 访问了数据库,在这种情况下,p 和 /p 之间有一个空格字符。很奇怪。

答案1

我首先要检查的是数据库中的内容是否如您所想的那样。例如,您确实有包含您所使用的确切字符串的帖子吗?您是否尝试过进行选择以查看该字符串是否匹配?

select ID from wp_posts where post_content like '%<p> </p>%'

如果您没有收到任何回复,则说明您的字符串不完全匹配,您需要开始找出字符串中的真实内容,也许可以导出到文件并查看其中的内容。另外,不要忘记代替函数区分大小写,因此 <P> 与 <p> 不同。

答案2

你可以尝试

UPDATE wp_posts set post_content = replace (post_content,'<p>\n</p>','');

和/或

UPDATE wp_posts set post_content = replace (post_content,'<p>\n\n</p>','');

答案3

和标签&nbsp;之间不是有一个吗?至少我的 TinyMCE 生成的内容是这样的。<p></p>

相关内容