【问题标题】:WordPress MySQL select query to filter every post content that contains img tags without src attribute or an empty srcWordPress MySQL 选择查询以过滤每个包含 img 标记但没有 src 属性或空 src 的帖子内容
【发布时间】:2020-03-03 19:26:01
【问题描述】:

问题

为了确定帖子内容中包含img标签的帖子,但是,没有imgsrcsrc属性根本不会出现。

我试图通过应用以下标准找到选择所有帖子内容的解决方案:

img 标签是必须出现的。

每个帖子内容都必须有 html img 标签,不带src,或者至少有空的src,如<img src=""

下面是我用来完成这个任务的

SELECT
  ID, post_title, post_content 
FROM 
  wp_posts 
WHERE 
  post_content LIKE('%<img % src=""%')
ORDER BY ID DESC;

问题

以前的解决方案按预期工作,但是,我正在寻找一个更好的解决方案,可能使用正则表达式,因为我认为我错过了包含 img 标记但没有 src 的帖子内容。

我正在尝试针对所有接受先前标准的可能案例。

示例帖子内容结果

<p align="center" style="text-align: center;">
  <img title="%2525ED%252599%252594%2525EB%2525B3%2525B4%2525EC%2525A7%252591%2B%2525ED%252591%25259C%2525EC%2525A7%252580%2B%2525EC%252597%252585%2525EB%2525A1%25259C%2525EB%252593%25259C.jpg" src="">
</p>

谢谢。

【问题讨论】:

  • 样本数据和期望的结果会有所帮助。 “空src”是什么意思?
  • 你为什么要在两个字符串文字上做一个CONCAT,结果是'%&lt;img %src=""%'
  • @GordonLinoff 从 SQL 判断,可能是&lt;img src=""
  • @GordonLinoff 我会用一些想要的结果来支持我的问题。 “empty src” 有时会出现 src 属性但没有指向图像的链接。
  • @Booboo 你说得对,不需要CONCAT 我会更新关于你的笔记的问题。

标签: html mysql sql wordpress


【解决方案1】:

我使用正则表达式的方式需要lookahead assertions,MySql 不支持。从您的 SQL 来看,&lt;img&gt; 标记和src 属性在出现时似乎总是小写(如果不是,请参见下文),那么以下可能有效:

SELECT
  ID, post_title, post_content 
FROM 
  wp_posts 
WHERE post_content LIKE '%<img %src=""%'
    OR (INSTR(post_content,'<img') <> 0  AND INSTR(post_content, 'src') = 0)
ORDER BY ID DESC;

如果&lt;img&gt; 标记或src 属性可能使用大写字母,则在上述SQL 中WHERE 子句中出现post_content 的任何位置,将其替换为LOWER(post_content)

For what it's worth, this is the Regex I would be using if MySql supported it

【讨论】:

  • 非常感谢@Booboo 的回答。现在我可以在没有src 的情况下定位img 标签。
猜你喜欢
  • 2017-12-14
  • 1970-01-01
  • 2014-01-01
  • 2011-02-07
  • 2015-07-16
  • 2016-06-24
  • 2016-01-06
  • 2017-08-21
  • 2017-12-13
相关资源
最近更新 更多