我创建了 preg_replace:
$searchTerm = preg_replace('/[^\p{L}\p{N}\s]/u', '', $searchTerm);
但是当我在搜索框中搜索时
!@#$%^&*()_+
它不工作。
我预计当任何人搜索此“!@#$%^&*()_+”时,输出为“未找到结果”。
任何人都可以建议更好的preg_replace。
我创建了 preg_replace:
$searchTerm = preg_replace('/[^\p{L}\p{N}\s]/u', '', $searchTerm);
但是当我在搜索框中搜索时
!@#$%^&*()_+
它不工作。
我预计当任何人搜索此“!@#$%^&*()_+”时,输出为“未找到结果”。
任何人都可以建议更好的preg_replace。
如果您尝试将正则表达式与数据库调用相关联,则搜索值的内容将去除非法字符并作为空字符串发送到数据库(不会找到任何结果):
$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!';
}