-1

我创建了 preg_replace:

$searchTerm = preg_replace('/[^\p{L}\p{N}\s]/u', '', $searchTerm);

但是当我在搜索框中搜索时

!@#$%^&*()_+

它不工作。

我预计当任何人搜索此“!@#$%^&*()_+”时,输出为“未找到结果”。

任何人都可以建议更好的preg_replace。

4

1 回答 1

2

如果您尝试将正则表达式与数据库调用相关联,则搜索值的内容将去除非法字符并作为空字符串发送到数据库(不会找到任何结果):

$searchTerm = '!@#$%^&*()_+';
$searchTerm = preg_replace('/[^\p{L}\p{N}\s]/u', '', $searchTerm);

// $searchTerm = '';
// Send this off to DB (which will return false)

if (!$search->search_db($searchTerm)) {
   echo 'No search results!';
}

如果您不希望它接触数据库,则可以将其保留在当前脚本的范围内:

if (preg_match('/[^\p{L}\p{N}\s]/u', $searchTerm)) {
   echo 'No search results!';
}
于 2013-01-12T11:30:41.103 回答