php - 我可以仅通过数据中的字母和数字查询列吗?比如 preg_replace

标签 php mysql sql regex preg-replace

我发现以下代码可以从 php var 中删除除字母和数字以外的所有内容,完美!

$string = "remove ever^&thing but *&^*&%£ letters & numbers*&^*";
$cleansedstring = preg_replace('#\W#', '', $string);
echo $cleansedstring;

但我想使用相同的规则在 mysql 中查询列。目的是从等式中删除所有和号、撇号、连字符等。

现在我使用一些丑陋的 REPLACE 语句!

AND Replace(Replace(Replace(Replace(Replace(MYColumn, '&', ''), '-', ''), ' ', ''), '(', ''), ')', '') =

我想要一个仅查看数字和字母的防弹查询!

:)

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

我通过提取较长的公司名称并清理它们以获得 seo 友好的 URL,在我的网站上生成链接。假设我们有“Bill & Ben 的花盆/花园服务”,我最终指向他们页面的 URL 看起来像/bill-bens-flower-pot-garden-service.htm

该 URL 是重写的 URL,因此实际页面类似于 company.php?name=bill-bens-flower-pot-garden-service

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

bill-bens-flower-pot-garden-service

返回详细信息:

Bill & Ben 的花盆/园艺服务

看起来并不总是防弹的。

感觉我的代码有点困惑,因为我到处都在做多少次替换。我的理论是只去除所有非字母和数字数据并以这种方式比较字符串:

WHERE Company = 'billbensflowerpotgardenservice' - 但我似乎无法在字段名称本身上这样做?

任何建议!

最佳答案

从 mysql 5.1 开始你可以使用正则表达式。这是它的文档页面: http://dev.mysql.com/doc/refman/5.1/en/regexp.html

关于php - 我可以仅通过数据中的字母和数字查询列吗?比如 preg_replace,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11973575/

相关文章:

mysql - SQL中的查询设计-满足特定条件的行中字段的ORDER BY SUM()

sql - 你使用了哪些编码技巧来避免编写更多的 sql?

mysql - MariaDB 仅选择大于的结果

php - 在 Ubuntu 16.10 上将 PHP 从 5.6 降级到 5.5

php - PHP/MySQL 中的短代码/标签

php - 使用 Glob() 时如何删除文件路径?

php - 从 PHP 编写 SQLite 数据库

PHP PDO 查询执行不保存传递的数据

sql - 在 MS SQL Server 2005 中使用 RAND() 时我做错了什么?

PHP - 过滤/搜索颜色