假设我有:
$string = 'qwe1ASD@';
if(preg_match('/^[a-zA-Z]+$/', $string))
{
echo 'OK';
}
else
{
echo 'BAD';
}
现在,有没有简单的解决方案,从 $string 中找到所有不匹配表达式的字符?所以作为返回,我想用 ex 代替“BAD”。 “不好。您不能使用以下字符:1@”
提前感谢任何简单的提示! :)
谢谢 Floern,您的回答最符合我的需要。它只有一个“preg”,因此对性能也有好处。再次感谢你。 我现在实现它如下:
if(preg_match_all('/[^a-zA-Z0-9]/s', $string, $forbidden))
{
$forbidden = implode('', array_unique($forbidden[0]));
echo 'BAD. Your string contains forbidden characters: '.htmlentities($forbidden).'';
}
最佳答案
$tmpstring=preg_replace('~[A-Za-z]~','',$string);
if(strlen($tmpstring))
//bad chars: $tmpstring
关于PHP 预匹配?如何返回不匹配的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6917576/