<?
$s = '';
$string1 = '<script>';
$string2 = 'färsk';
$string3 = 'öde';
$rex = "/[\^<@\/\{\}\!\*\$%\?=≤>€:\|;#]+/i";
if (preg_match($rex,$string1)) { $s = NULL; }
if ($s === NULL) { echo 'null'; } else { echo "not null"; }
?>
为什么$ string2为空? 'ä'字符有什么特别之处?其他瑞典人,å和ö通过正则表达式。
欣赏我的正则表达式的任何修复。我希望它允许除了正则表达式中定义的特殊字符之外的所有内容。
编辑:
澄清: 我想要做的就是通过一系列特殊字符来除外。 $ string2和3都应该通过,$ string 1不应该(因为&lt;和&gt;)。
答案 0 :(得分: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