2011-03-25 73 views
3

我有兩個字符,我需要在php字符串中進行搜索和替換。這些是什麼ASCII字符?

不知何故這些是不同的從:

  1. '
  2. "

有誰知道我可能用什麼函數從PHP字符串中去除這些內容?

+2

前兩個不是ASCII碼。它們被稱爲「聰明/奇特的引號」,主要來自某個辦公室套件*咳嗽*,並且如果您的網站使用某種編碼進行了指定,則它不會成爲問題 - 但遺憾的是,它與Unicode不兼容。 (現在,公平的說,Unicode應該有相應的東西 - 可以說是現在使用的東西) – delnan 2011-03-25 17:06:51

+0

這個可愛的人物在很長的一段時間裏一直是我的主要編碼難題。 – amosrivera 2011-03-25 17:07:34

+0

如果你正在處理這些角色,你也可能會遇到那種破折號('-')。如果你沒有使用UTF-8,那很煩人。 – 2011-03-25 17:13:38

回答

2

這就是當有人在outlook中向你發送電子郵件時發生的情況,所以要小心,因爲你完全錯過了那些單引號的開頭對,並且關閉了雙引號對。 But really, you need to be using html entity codes

爲什麼?因爲在荒野中,比上面發佈的那兩個代碼更有趣得多,事實上,你只顯示了一半的報價(即,你錯過了結束單引號和打開雙引號) 。有數百個,你需要以比字符串替換更好的方式對它們進行編碼。

有幾種方法可以管理從編碼到html實體的翻譯。

http://php.net/manual/en/function.htmlentities.php

http://piology.org/entities.html

http://konieczny.be/unicode.html

有也比較多,但他們基本上做同樣的事情。

1

裏面保存爲UTF-8(所以這些字符正確replresented)PHP腳本,你可以簡單地使用str_replace剝去它們。

0

爲什麼不只是使用str_replace

$new_str = str_replace(array('’', '「'), '', $str); 

當然,這需要你的PHP腳本保存爲UTF-8。


如果這行不通,因爲這些字符不能正常使用UTF-8編寫的,你就必須退回到使用他們的十六進制表示。

例如:

$new_str = str_replace(array('\xC2\x91', '\xC2\x93'), '', $str); 

(不知道我使用的十六進制值是真的那你的兩個特殊報價,雖然)

1

你有什麼叫智能引號,或彎引號。有人在做類似的事情。 Chris Shiflett

+0

+1解決核心問題。 – Incognito 2011-03-25 17:16:34