我想知道PCRE如何检测来自任何语言的字符。 我是测试此字符串:Unicode字符集中的“字”字符
"間違つ"
PHP文件被编码为UTF-8和被适当地标记有字符集= UTF-8在内容类型代码。
<?php
$string="\xE9\x96\x93\xE9\x81\x95\xE3\x81\xA4"; //Bytestream from "間違つ"
$string=preg_replace('/\w/','\w',$string);
echo $string;
echo "<br>";
$byte="\xE9"; //I've tried with each byte separately to find word characters
if(preg_match('/\w/',$byte)){
echo "$byte is a word";
}
else{
echo "$byte is not a word";
}
?>
"\xE9" "\xE9" "\xE3"
来自所有的字节,都是单词。
它显示:
我知道为什么符号出现。 解码器使用Unicode替换字符,代码点FFFD, 作为解码无效的UTF-8序列,而不是停止处理文本。 由于一个“单词字符”被替换'\w'
代替,然后它打破了“字节安全性”显示,因此存在无效序列。
所以问题是:
为什么,如果他们不合法的UTF-8序列这些字符类的字眼是否匹配?
如何知道这些字符实际上是所有Unicode字符集的单词字符?