PHP preg_match?如何返回不匹配的字符?

发布于 2024-11-28 02:07:37 字数 573 浏览 0 评论 0原文

可以说我有:

$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).'';
}

Lets say i have:

$string = 'qwe1ASD@';

if(preg_match('/^[a-zA-Z]+$/', $string))
{
    echo 'OK';
}
else
{
    echo 'BAD';
}

Now, is there simple solution, to find all characters from $string which don't match expression? So in return, in place of "BAD" i want to have ex. "BAD. You can't use following characters: 1@"

Thanks in advance for any simple hints! :)


Thank you Floern, your answer suit best my needs. It have only one "preg" so it's also good for performance. Thank you again.
I implemented it for now as follw:

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).'';
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

绻影浮沉 2024-12-05 02:07:37
$tmpstring=preg_replace('~[A-Za-z]~','',$string);
if(strlen($tmpstring))
    //bad chars: $tmpstring
$tmpstring=preg_replace('~[A-Za-z]~','',$string);
if(strlen($tmpstring))
    //bad chars: $tmpstring
挖鼻大婶 2024-12-05 02:07:37

您可以使用 preg_match_all()

if(preg_match_all('/[^a-zA-Z]/s', $string, $matches)){
    var_dump($matches); // BAD
}
else{
    echo 'OK';
}

You could use preg_match_all():

if(preg_match_all('/[^a-zA-Z]/s', $string, $matches)){
    var_dump($matches); // BAD
}
else{
    echo 'OK';
}
我一向站在原地 2024-12-05 02:07:37
$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);
}
$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);
}
大海や 2024-12-05 02:07:37

有不同的方法。我觉得这个不错:

$check = preg_prelace('/[a-zA-Z]/', '', $string);

if ($check) echo 'BAD ' . $check;

更新:

if (strlen($check)) echo 'BAD ' . $check;

There are different ways. I find this one nice:

$check = preg_prelace('/[a-zA-Z]/', '', $string);

if ($check) echo 'BAD ' . $check;

UPDATE:

if (strlen($check)) echo 'BAD ' . $check;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文