Php 我可以只通过数据中的字母和数字来查询列吗?比如preg_replace

Php 我可以只通过数据中的字母和数字来查询列吗?比如preg_replace,php,mysql,sql,regex,preg-replace,Php,Mysql,Sql,Regex,Preg Replace,我发现下面的代码删除了php变量中除字母和数字以外的所有内容,非常完美 $string = "remove ever^&thing but *&^*&%£ letters & numbers*&^*"; $cleansedstring = preg_replace('#\W#', '', $string); echo $cleansedstring; 但是我想使用相同的规则在mysql中查询一列。目的是从等式中删

我发现下面的代码删除了php变量中除字母和数字以外的所有内容,非常完美

$string = "remove ever^&thing but *&^*&%£ letters & numbers*&^*";
$cleansedstring = preg_replace('#\W#', '', $string);
echo $cleansedstring;
但是我想使用相同的规则在mysql中查询一列。目的是从等式中删除所有的符号、撇号、连字符等

现在我使用一些丑陋的替换语句

AND Replace(Replace(Replace(Replace(Replace(MYColumn, '&', ''), '-', ''), ' ', ''), '(', ''), ')', '') =
我想要一个只看数字和字母的防弹查询

:)

编辑:我想我应该进一步解释我的问题,也许你们中的一位可以提出其他建议

我通过拖出长长的公司名称并清理它们以获得seo友好的URL,在我的网站上生成链接。所以,假设我们有“比尔和本的花盆/花园服务”,我最终的网页URL看起来像/Bill-bens-Flower-Pot-Garden-Service.htm

该URL是一个重写的URL,因此实际页面类似于company.php?name=bill bens花盆花园服务

我需要抓取“姓名”并查询数据库以返回他们的公司详细信息。但是得到:

比尔·本的花盆花园服务

要返回以下内容的详细信息:

比尔和本的花盆/花园服务

似乎并不总是防弹的

我只是觉得我的代码有点乱,因为我到处都在做替换。我的理论是去掉所有非字母和数字数据,然后用这种方式比较字符串:

WHERE Company='billbensflowerportgardenservice'-但我似乎不能在字段名本身上这样做


任何建议

自mysql 5.1以来,您可以使用正则表达式。以下是相关的文档页面:

MySQL没有内置的reg replace功能。您可以检查这个问题的答案:只是为了澄清一下,您想修改列数据,以便“this-so cool!”变成“this-so cool”,用于与纯文本字符串进行比较?类似(不存在的)ReExpExchange(…)=“这很酷”?你也可以考虑一个松散的Gosiy FultLeXT索引,然后在脚本中使用额外的过滤。你可以在中编译:我已经编辑并添加了关于问题的额外信息,但是。。。他希望修改列,然后使用修改后的文本进行比较。我不认为使用REGEXP可以实现这一点。现在,如果你能把你的比较字符串写成正则表达式,那你就太棒了。(但这不太方便用户使用。)