0

我一直在尝试将我的一个变量与另一个变量匹配。我想要的所有变量让我们说$word包含无论它与另一个变量匹配的内容,让我们说$search_in并相应地回显结果。

我一直在使用if (preg_match("/$word/i", $search_in)) echo "matches";,但是当我对从数据库返回的值应用正则表达式时,我收到了很多类似以下的警告。

警告:preg_match() [function.preg-match]: 未知修饰符 '('

警告:preg_match() [function.preg-match]:未知修饰符 'T'

4

2 回答 2

3

如果只需要检查是否$word存在于 中$search_in,可以使用:

if(stripos($search_in, $word) !== FALSE) echo "matches";

正如PHP 手册所说:

如果您只想检查一个字符串是否包含在另一个字符串中,请不要使用 preg_match()。请改用 strpos() 或 strstr() ,因为它们会更快。

于 2012-11-27T18:27:07.830 回答
2

$word很可能包含一个斜线。

你应该使用stripos它,因为你根本不需要正则表达式的力量:

if (stripos($search_in, $word) !== false) echo 'matches';

为了记录,preg_match这样做的方式是:

if (preg_match('/'.preg_quote($word, '/').'/i', $search_in)) echo 'matches';

当前者可以完成工作时,总是更喜欢字符串函数而不是正则表达式。

于 2012-11-27T18:28:03.657 回答