我有一個字符串(從如果它使任何區別一個MySQL數據庫中獲取),它看起來很普通:爲什麼我嘗試替換字符串中的字符失敗?
Manufacture: <a href="http://www.x.com/">Blah</a>
的問題是,Manufacture:
和<a>
標籤之間的空間有194則charCode,而不是32如我所料。
這是造成preg_match
下列分配失敗(請忽略了與正則表達式解析HTML的嘗試,我知道這不是一個好主意,但這個特殊的數據集是足夠預見它逃脫):
/Manufacture: *(<a[^>]*>([A-Za-z- 0-9]+)<\/a>)/i
如果我用文本編輯器中的正常空格字符替換流氓空間,然後再試一次,表達式按預期匹配,但我需要以編程方式修改它。
我試圖str_replace
:
$text = str_replace(chr(194), ' ', $text);
但preg_match
仍然失敗。然後,我嘗試preg_replace
:
$text = preg_replace('/[\xC2]/', ' ', $text);
但是,這並不通過preg_match
確實包含預期的匹配任何工作,即使運行相同的模式。
有沒有人有任何想法?
你確定它的編碼點194?這應該是「大寫字母A,帶有迴音」而不是間距字符。 – Bobulous 2012-08-11 15:52:48
@ user1515834正面的,我將字符複製到剪貼板上,並通過'ord()'運行,它返回194.另外'preg_match('/ [\ xC2] /',$ text);'返回'TRUE',確認那個角色肯定在那裏(C2在194)(十六進制) – Clive 2012-08-11 15:55:49
所以它應該是大寫的A,帶有旋律,當然?爲什麼它作爲你的空間出現? – Bobulous 2012-08-11 15:56:20