我有一堆包含“\ xaa”,“\ xam”,“\ xaz”等格式的字符串数据。当我将它们打印到屏幕或试图逐个字符地匹配它时,它将无法工作,例如,我不明白这些字符串有很多:
echo "\xaa"; // prints a question mark to the screen
echo "\xa"; // simply shows noting
$strZero = strlen("\xaa"); // shows 1 as length of string
$strOne = strlen("\xaz"); // but this shows 2 as length of string
我不知道发生了什么我的意思是我知道它与utf8编码有关。我想要的是逃避这些字符串,如“\\ xaa”并获取字符,长度应为4。
我知道有类似的问题表明:
$str = "\xaa"
utf8_encode($str); // this gives a not "\\xaa"
// or
utf8_decode($str); // this returns a question mark "?"
这些都没有以我想要的方式返回转义字符串,我将如何处理这个实际操作,而不是通过在此之前放置一个额外的反斜杠来手动转义每个字符串。
我认为你对escape sequences有误解。 \
用于表示逃逸字符。 \x
有特殊意义
\ xhh字符,带十六进制代码
hh
在UTF-8:
U +00EAêc3aa带有CIRCUMFLEX U + 000A 0a的拉丁文小写字母E
哪个可以解释你得到了? (如果您的浏览器不理解UTF-8 0xaa
)并且没有(因为0xa
似乎不可打印)。
如果你真的想要\xaa
或\xa
作为字符串的值,你将需要\\
转义字符:
echo "\\xaa"; // Should show \xaa
echo "\\xa"; // Should show \xa
$strZero = strlen("\\xaa"); // should be 4 as length of string
$strOne = strlen("\\xaz"); // should be 4 as length of string