我们有一个使用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.
祝好运.