php中的preg_替换方法

php中的preg_替换方法,php,regex,preg-replace,Php,Regex,Preg Replace,我已创建preg_替换: $searchTerm = preg_replace('/[^\p{L}\p{N}\s]/u', '', $searchTerm); 但当我在搜索框中搜索时 !@#$%^&*()_+ 它不起作用了 当任何人搜索此“!@$%^&*()”时,输出为“未找到结果” 任何人都可以建议更好的preg_replace。如果您试图在数据库调用中使用正则表达式,搜索的值将删除其内容中的非法字符,并将其作为空字符串发送到数据库(在数据库中找不到结果): 如果您不希望它接触DB

我已创建preg_替换:

$searchTerm = preg_replace('/[^\p{L}\p{N}\s]/u', '', $searchTerm);
但当我在搜索框中搜索时

!@#$%^&*()_+
它不起作用了

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


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

如果您试图在数据库调用中使用正则表达式,搜索的值将删除其内容中的非法字符,并将其作为空字符串发送到数据库(在数据库中找不到结果):

如果您不希望它接触DB,您可以将其保持在当前脚本的范围内:

if (preg_match('/[^\p{L}\p{N}\s]/u', $searchTerm)) {
   echo 'No search results!';
}

请发布您的预期输出您不工作是什么意思?您的正则表达式将删除除字母、数字和空格以外的任何内容。当任何人搜索此“!@$%^&*()\”,则out put为“未找到结果”时,我希望
if (preg_match('/[^\p{L}\p{N}\s]/u', $searchTerm)) {
   echo 'No search results!';
}