2011-12-15 89 views

回答

1

行,只是讓你知道preg_replace('/[\x{fffe}-\x{ffff}]/u', '', $string)做到了。

0

一個注意:0xFFFE(錯了,請參閱下面編輯 - 實際上它是爲0xFEFF)通常使用所謂的字節順序標記,這是一個可選的東西在文件開頭(只有那裏! )表示內容的字節順序。它通常包含在XML文件等內容中。 因此,可能只考慮以此值開始的內容的情況,而不用擔心其餘部分。

編輯:正如通過評論指出的,它是0xFEFF用作BOM(更多請參閱wikipedia),而不是0xFFFE。因此,如果它打算使用BOM,它可能會被破壞,或者解碼器被認爲是錯誤的順序(UTF-16 BE vs LE)。但更有可能的是它被用作無效的char標記;如果是這樣,原始問題更有意義。唯一的附加建議是,提供這些內容的人可能使用的編碼太有限(ascii,latin-1),理想情況下應該修復該服務,而不必在客戶端處理此問題。

+1

字符U + FFFE是一個非字符,在傳輸的文本中是非法的,雖然可以用在程序的內部,因爲它不是一個有效的字符。無論哪個字節在給定的編碼中都會編碼,因爲U + FEFF正好用作BOM,因爲如果以相反方式解釋它,它將是U + FFFE,這是非法的,因此不可能永遠不會正確。 – 2011-12-16 13:08:03

相關問題