PHP preg_match regex如果找不到文本,则发送警告
我的数据库中有一个表,我想获取表中的记录,并与用户输入的文本进行比较,如果它们匹配,则获取并显示表中该行的其他字段 这是我的代码:PHP preg_match regex如果找不到文本,则发送警告,php,regex,preg-match,Php,Regex,Preg Match,我的数据库中有一个表,我想获取表中的记录,并与用户输入的文本进行比较,如果它们匹配,则获取并显示表中该行的其他字段 这是我的代码: $q = "SELECT * FROM Kala2 WHERE 1"; $res = mysqli_query($db, $q); while ($row = mysqli_fetch_assoc($res)) //For each word { $t = $row[sharhe_kala]; $p = $row[mark]; if (preg_m
$q = "SELECT * FROM Kala2 WHERE 1";
$res = mysqli_query($db, $q);
while ($row = mysqli_fetch_assoc($res)) //For each word
{
$t = $row[sharhe_kala];
$p = $row[mark];
if (preg_match("/$t/i", $text)) {
if (preg_match("/$p/i", $text)) {
*** do something ***
}}
它可以工作,但当用户$text输入的单词不在数据库中时,它会发送以下警告:
PHP警告:preg_match:中的未知修饰符“1”
当$row[sharhe_kala]或$row[mark]是数字时,也不会回答
例如,如果$t=KOYO和$p=Ballbearing且用户输入$text=KOYO Ballbearing,则显示重新结果及其ok,但如果用户输入$text=ntn zzz,则其发送此警告:PHP警告:preg_匹配:中的未知修饰符“1”
如果$t=222和$p=Ballbearing且用户输入$text=222 Ballbearing,则不会显示重新结果,也不会显示来自以下位置的任何警告:
此函数可能返回布尔值FALSE,但也可能返回
计算结果为FALSE的非布尔值。请阅读关于
更多信息请参见布尔值。使用===运算符测试
此函数的返回值
听起来变量包含特殊字符,即斜杠/用于分隔符。试着预先设定你的变量。例如:
if (preg_match("/".preg_quote($t, '/')."/i", $text)) {
if (preg_match("/".preg_quote($p, '/')."/i", $text)) {
必须转义直接在regexp中发送的变量
$text = "222 ballbearing";
$t = 222;
$p = "Ballbearing";
if (preg_match("/{$t}/i", $text)) {
if (preg_match("/{$p}/i", $text)) {
echo "Match detected";
}
}
$t和$p的内容是什么,我认为它们包含特殊字符。它们是一些名称,请添加可复制的示例。美元符号$标记正则表达式检查的结束,因此您的正则表达式在我看来必须类似于/{$p}/iWorks。即使有数值。您在其他地方有一个错误。是的,谢谢,在使用preg_quote后没有警告,但如果$t或$p为numerical@ZaGol我试着使用你添加到问题中的价值观,但它对我有效。问题必须在其他位置或具有不同的值。您是对的,现在所有条目都可以了。非常感谢。