2012-05-06 48 views

回答

4

它被解释为\x00(空字符),但它几乎肯定是由于草草编辑或复制和粘贴导致的错误。

0

这很奇怪。一个unicode字符的Php表示法是\ x {}。在perl中,它是一样的。

但是php在正则表达式中有// u修饰符。我认为这意味着unicode。在perl中没有这样的修饰符。

在perl正则表达式中,\ x ##被解析,其中##需要表示一个ascii字符。如果它的\ x或\ x#忽略了非法十六进制数字的警告(因为它需要2位数字,则不会少于这个数字),并且它只需要序列中的有效十六进制数字。如果\ x中没有数字,则使用\ 0 ascii char等。

但是,任何\ x {}符号都可以,\ x {0}等同于\ x {}。并且\ x {ff}被认为是ASCII码,\ x {100} - 被认为是unicode。

因此,\ x是一个有效的十六进制/ Unicode转义序列,但其本身就是其假设的十六进制,并且是不完整的,可能不应该留给解析器默认机制。

+0

Perl确实有'/ u'正则表达式修饰符... – hobbs

+0

@hobbs - 感谢您的高举。我的5.10版具有/ imsxpgc,5.14/adlu -/imsxadlupgc中的新功能。旧版本的升级到Unicode规则可以通过目标或模式UTF-8编码或平台自动进行。所以/ \ x {100}/u似乎是多余的,除非显然(?u:)是可能的。我不知道现在双方的自动推广会发生什么。 5.10确实存在已修复的错误,所以我可能会升级。 – sln

0

据我所知,第二个\x实际上是一个无效的字符。这两个表达式都有效吗

相关问题