簡體   English   中英

PHP特殊字符替換功能

[英]PHP special characters replace function

當我替換é時,它變為é。 我在PHP和HTML中使用UTF-8編碼。 我希望函數返回我放入函數中字符的HTML代碼。

function ctrlspecialchars($subject){    
$search = array("<",">","é","à","â","ä","æ","ç","è","ê","ë","ï","î","ò","ó","ô","ö","ø","ù","ú","û","ü","©","®","«","»","¼","½","¾","±","§","¥","£","{","}","$","%");
$replace = array("&lt;","&gt;","&#233;","&#224;","&#226;","&#228;","&#230;","&#231;","&#232;","&#234;","&#235;","&#239;","&#238;","&#242;","&#243;","&#244;","&#246;","&#248;","&#249;","&#250;","&#251;","&#252;","&#169;","&#174;","&#171;","&#187;","&#188;","&#189;","&#190;","&#177;","&#167;","&#165;","&#163;","&#123;","&#125;","&#36;","&#37;");

return str_replace($search,$replace,$subject); 
 }

嘗試使用charset:iso-8859-1(而不是UTF-8),或確保在html標頭中設置字符集:

PHP : header('Content-type: text/html; charset=utf-8');
HTML: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

由於我復制了您的代碼,並且可以在本地環境中正常工作,因此您的問題不應該出在代碼中,而應該是編碼。

我不知道您的編碼需求(也許您需要在某些頁面上打印一些特殊字符),但是出於測試目的,請嘗試使系統的所有部分都使用UTF-8。 按照@ user2879055的提示進行操作,將數據庫配置為使用utf8_general_ci並確保PHP文件已以UTF-8編碼。

參見下面的編輯器圖像(我正在使用Atom),該圖像配置為以UTF-8編碼文件。 大多數編輯器具有類似的配置類型。 如果您的編輯器有兩個UTF-8選項(帶有和不帶有BOM),請選擇不帶BOM( 此處的信息)。

原子構型

最后,如果您使用的是Apache,請將行IndexOptions +Charset=UTF-8.htacces

在這些測試期間,請避免使用utf8_encondingutf8_decode函數。

當它起作用時,為每個步驟改回相應的配置並進行測試,因此當代碼再次失敗時,您將發現問題出在哪里。 現在,您可以根據需要配置環境,並僅在有問題的部分上進行工作。

只是FIY,我正在將您的函數與var_dump(ctrlspecialchars("<ó äî ò æ ç % ®>")); 並且我的瀏覽器顯示/var/www/html/replace.php:10:string '&lt;&#243; &#228;&#238; &#242; &#230; &#231; &#37; &#174;&gt;' (length=61) /var/www/html/replace.php:10:string '&lt;&#243; &#228;&#238; &#242; &#230; &#231; &#37; &#174;&gt;' (length=61) /var/www/html/replace.php:10:string '&lt;&#243; &#228;&#238; &#242; &#230; &#231; &#37; &#174;&gt;' (length=61)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM