2
<?
    $s = '';
    $string1 = '<script>';
    $string2 = 'färsk';
    $string3 = 'öde';

    $rex = "/[\^<@\/\{\}\!\*\$%\?=≤&gt;€:\|;#]+/i";
    if (preg_match($rex,$string1)) { $s = NULL; }
    if ($s === NULL) { echo 'null'; } else { echo "not null"; }
?>

为什么 $string2 给出 null?'ä' 字符有什么特别之处?其他瑞典语 å 和 ö 很好地通过了正则表达式。

感谢对我的正则表达式的任何修复。我希望它允许除该正则表达式中定义的特殊字符之外的所有内容。

编辑:


澄清:我想做的是让除了特殊字符列表之外的任何东西都通过。$string2 和 3 都应该通过,$string 1 不应该通过(因为 < 和 >)。

4

1 回答 1

3

避免不必要的转义。请参见下面的代码:

$string1 = '<script>';
$string2 = 'färsk';
$string3 = 'öde';

$rex = "/^[^<>@\/{}!*$%?=≤€:|;#]+$/u";

var_dump (preg_match($rex, $string1)); // false
var_dump (preg_match($rex, $string2)); // true as no special char in character class
var_dump (preg_match($rex, $string3)); // true as no special char in character class
于 2013-10-08T18:55:58.130 回答