微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – MySQL正则表达式,用于在正文中使用双斜线查找内部URL

我们有一个使用wordpress的网站,我们发现在某些时候,一个糟糕的插件用户错误在siteurl之后添加了两个斜杠(例如,http://example.site//category1/或http:// example. site / category1 // category2 /等

这似乎有效,但看起来效果不够.

SELECT id,post_content
FROM `wp_posts`
where post_content
regexp '(href="[^"]*[^:]\/\/[^"]*)'
and post_status  in('draft','publish')
order by id asc

一个更好的方法吗?我不希望它在http:之后的双斜杠上匹配,因此在:的负匹配.

编辑:为了澄清,我想找到所有帖子(wordpress帖子/页面的正文)有一个硬编码到具有双斜线的页面的URL,但在http:.之后的双斜杠上不匹配.

Regexp应匹配以下内容
http://example.site//category1/或http://example.site/category1//category2/或甚至http://example.site/category1/category2//或example.site/category1//category2/

但不应该匹配以下内容
http://example.site/category1/或http://example.site/category1/category2/

解决方法

也许这样的事情会起作用.

SELECT *
FROM wp_posts
WHERE CASE WHEN instr(post_content,'http://') > 0 THEN 
  substring(post_content,7) regexp '\/\/'
ELSE
  post_content regexp '\/\/'
END

这是SQL Fiddle.

祝好运.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐