2010-10-07 137 views
5

我正在爲客戶開發CMS,他需要編輯東西並使用特殊字符,如ç®。但是,我不希望他必須輸入像®這樣的字符代碼。有誰知道使用PHP自動轉換這些字符的好方法嗎?將特殊字符轉換爲HTML字符代碼

+4

Err。只要確保你的字符編碼是一致的(即全部使用UTF-8),並且你不需要將這些字符轉換爲完美顯示。 – Quentin 2010-10-07 14:29:25

回答

14

您可以使用ヶ輛()來做到這一點。

php -r 'echo htmlentities("®ç", ENT_COMPAT, "UTF-8"), "\n";' 
®ç 

要打開實體回可讀文本,使用html_entity_decode():

php -r 'echo html_entity_decode("®ç", ENT_COMPAT, "UTF-8"), "\n";' 
®ç 

如果你不使用Unicode,忽略字符集名稱或給出正確的字符集。

+1

+1用於指定編碼。 – 2010-10-07 14:35:20

+0

夢幻般的答案,解決了我幾年來所遇到的問題。值得注意的是,當您將代碼從操作系統移至操作系統時,提及複製粘貼或硬編碼ALT KeyCode版本符號的其他答案將不起作用。 – 2012-09-14 03:54:18

2

使用Unicode,並告訴他如何&粘貼從字符映射表複製:-)

+4

-1。這是什麼答案? – 2010-10-07 14:23:03

+3

@Alin如果客戶端已經在使用像ç和®這樣的字符,那麼使用UTF-8(例如CMS的輸入,存儲和輸出)將啓用你不需要HTML實體。就像它在這個網頁上做的那樣,例如,我剛輸入「®」,將它發送到網站,並且網站顯示爲「®」 - 查看此頁的源代碼,在那裏看不到一個HTML實體,只是真實的,真實的人物。 – 2010-10-07 14:27:28

+0

@MattGibson一個問題是,如果您使用源代碼管理,並且您將代碼在基於Unix的操作系統和Windows操作系統之間來回移動。我已經學會了艱難的方式,ALT鍵碼無法按照您希望它們跨操作系統的方式工作。 – 2012-09-14 03:08:50

1

您可以使用:

htmlentities

+0

謝謝!它的工作原理:) – 2010-10-07 14:37:42

3

最簡單的辦法是使用UTF-8從一開始。
但你也可以自動轉換字符DOM:

$dom = new DOMDocument; 
$dom->appendChild(new DOMText('© oui içi » ')); 
echo $dom->saveHtml(); 

輸出

© oui içi » 
0

看看htmlentities函數。這需要一個字符串並將組件字符轉換爲它們的HTML實體。您可以指定字符串的編碼以與用戶的輸入保持一致。

+0

謝謝!有用 :) – 2010-10-07 14:41:35