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

标签 php preg-match expression

假设我有:

$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/

相关文章:

php - 如何在 php 中执行模式为数组的 preg_match?

android - kotlin lambda 表达式作为可选参数

algorithm - 用于计算循环内字段的表达式

php - sql在表中显示数据而不指定列名

php - PHP 数组的问题

php - 将mysql中的行合并为一行

php - 与 PHP 的 preg_match() 一起使用的正则表达式来查找换行符

php - 如何使用变量来处理 Jquery 选择器

php - 正则表达式 - PHP

php - preg_match() 什么时候做 : Unknown modifier error occur?