这两个字符串似乎是一样的。为什么正则表达式匹配一个而不是另一个?
.Modal .Contents
输出:
$str1 = "NЕТ";
$str2 = "NET";
if (preg_match("/NET/",$str1)){
echo "Match string 1!";
}
else {
echo "Does not match string 1!";
}
if (preg_match("/NET/",$str2)){
echo "Match string 2!";
}
else {
echo "Does not match string 2!";
}
答案 0 :(得分:3)
剧透警告: $str1
和$str2
不相同。
这是因为角色看起来一样,实际上是不同的:
$str1 = "NЕТ"; echo bin2hex($str1), "\n";
$str2 = "NET"; echo bin2hex($str2), "\n";
输出:
4ed095d0a2
4e4554
实际上,如果您打印出每个字符串中所有字符的名称及其Unicode代码点,您将获得$str1
的第一个块和$str2
的第二个块。
78 LATIN CAPITAL LETTER N
1045 CYRILLIC CAPITAL LETTER IE
1058 CYRILLIC CAPITAL LETTER TE
78 LATIN CAPITAL LETTER N
69 LATIN CAPITAL LETTER E
84 LATIN CAPITAL LETTER T