2012-05-06 47 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實際上是一個無效的字符。這兩個表達式都有效嗎

相關問題