如果db_table包含一组网址
1,www.something.any/djjjj
2,www.anything.any/nsmms
3,www.google.com
等
我希望过滤一些确切前缀的某个url,这是某种东西 在帮助下我得到了答案说这个
if (preg_match('/something.com/i', $url) > 0) {
// Your error message here
}
问题
如何应用preg_match
的相同想法从db_table中删除所有内容
$sql= "delete from urls where preg_match('/something.com/i', $url) > 0";
mysql_query($sql) or die("query failed: $sql".mysql_error());
它确实给出了错误,但这是我想要应用的确切想法,所以任何想法!
因为我要连接到db然后调用我的表中的所有url然后应用它来删除添加了那个确切前缀something.com
的所有url,就是这样。
答案 0 :(得分:3)
DELETE FROM urls WHERE url REGEXP 'something\.com'
答案 1 :(得分:2)
考虑一下这个...... http://dev.mysql.com/doc/refman/5.1/en/regexp.html
这里有一个更简单的方法“LIKE Statement”http://www.tutorialspoint.com/mysql/mysql-like-clause.htm。第二种方法在更简单的情况下很有用,您可以选择“所有以 * 开头的字符串”。但它完全匹配 如有任何其他问题,请询问:)
答案 2 :(得分:1)
呃......你知道MySQL中字符串中的%modidfier - 例如。
delete from urls where url like '%something.com%'
它不是正则表达式,但它也会起作用并且速度更快
答案 3 :(得分:1)
MySQL中有几个相似的工具,其中有两个已经提到
如果你想要更强大的东西,你可以install the PREG plugin for MySQL。
我建议首先尝试使用其中一个第一个解决方案来解决它,因为PREG插件可能会有点麻烦来运行并且可能不会在您的生产环境中,除非您处于紧张状态与DBA的:)
答案 4 :(得分:-1)
我不知道MySQL的任何REGEX(但我不是说没有,我只是没有意识到它们)。但是对于你所描述的内容,你可以尝试:
delete from table where field like '%something.com%'