让我们说:
$string = 'qwe1ASD@';
if(preg_match('/^[a-zA-Z]+$/', $string))
{
echo 'OK';
}
else
{
echo 'BAD';
}
现在,有没有简单的解决方案,找到$ string中与表达式不匹配的所有字符?所以作为回报,取代“不好”,我想拥有前任。 “不好。你不能使用以下字符: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).'';
}
答案 0 :(得分:4)
$tmpstring=preg_replace('~[A-Za-z]~','',$string);
if(strlen($tmpstring))
//bad chars: $tmpstring
答案 1 :(得分:2)
您可以使用preg_match_all()
:
if(preg_match_all('/[^a-zA-Z]/s', $string, $matches)){
var_dump($matches); // BAD
}
else{
echo 'OK';
}
答案 2 :(得分:1)
$string = 'qwe1ASD@';
if(preg_match('/^[a-zA-Z]+$/', $string))
{
echo 'OK';
}
else
{
echo 'BAD. You cannot use the following characters: ' + preg_replace('/[a-zA-Z]/', '', $string);
}
答案 3 :(得分:0)
有不同的方式。我发现这个很好:
$check = preg_prelace('/[a-zA-Z]/', '', $string);
if ($check) echo 'BAD ' . $check;
更新:
if (strlen($check)) echo 'BAD ' . $check;