我想知道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字符集的單詞字符?