Php 在MySQL查询中,是否仍有要执行的操作;o";读作;0“;反之亦然?

Php 在MySQL查询中,是否仍有要执行的操作;o";读作;0“;反之亦然?,php,mysql,wordpress,Php,Mysql,Wordpress,我不太确定如何正确解释这一点,但我会尽力的。我使用ajax根据文本输入字段过滤某些帖子。然后列出所有帖子,包括用户输入的字母和数字。非常基本的东西 现在,我的客户想添加一个“智能搜索”功能。基本上,如果用户输入“0123”,他们希望它列出所有标题包括“0123”和“o123”的帖子。同样的事情也需要发生在“s”和“5”上。因此,如果用户键入“1234s”,它将列出包括“1234s”和“12345”在内的所有帖子。有什么办法可以这样做吗 这是我到目前为止得到的,numberchar是文本输入的名称

我不太确定如何正确解释这一点,但我会尽力的。我使用ajax根据文本输入字段过滤某些帖子。然后列出所有帖子,包括用户输入的字母和数字。非常基本的东西

现在,我的客户想添加一个“智能搜索”功能。基本上,如果用户输入“0123”,他们希望它列出所有标题包括“0123”和“o123”的帖子。同样的事情也需要发生在“s”和“5”上。因此,如果用户键入“1234s”,它将列出包括“1234s”和“12345”在内的所有帖子。有什么办法可以这样做吗

这是我到目前为止得到的,numberchar是文本输入的名称

$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '".trim($_POST['numberchar'])."%' order by ID desc";
您可以使用MySQL的REPLACE或PHP的str_REPLACE 您可以使用MySQL函数在查询本身中执行以下操作:

REPLACE('queryStringArgument', 'o', '0')
如果您希望在服务器上执行此操作,也可以使用PHP:

$numberchar = isset($_POST['numberchar']) ? $_POST['numberchar'] : ""; // Get the POSTed value if it's set.
$fixedNumberchar = str_replace("o", "0", $numberchar);
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '". $fixedNumberchar ."%' order by ID desc";

你知道这可能不是个好主意;您应该捕获无效参数并通知用户他做错了什么。但这要由您决定。

您需要将此更改为:

$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE REPLACE(`post_title`,'[a-zA-z]+','') LIKE '%".trim(preg_replace("[^0-9]","", $_POST['numberchar']))."%' order by ID desc";
去掉所有字符,只允许数字,在开头添加%ad将允许o1234


这可能会变得相当棘手,有很多可能。你是否也要解释1看起来像“I”或小写“L”,8看起来像“B”,6看起来像“G”,2看起来像“Z”?如果是这样,“0123”可以是“o123”,或“0l23”或“ol23”或“o1z3”。。。。等等,这是可以做到的,但神圣的蝙蝠侠!
// Replace "o" with "0"
$numberchar = str_replace("o", "0", trim($_POST['numberchar']));
$categoryparentfilter = "SELECT ID FROM `wp_posts` WHERE `post_title` LIKE '". $numberchar ."%' order by ID desc";