[英]PHP special characters replace function
當我替換é時,它變為é。 我在PHP和HTML中使用UTF-8編碼。 我希望函數返回我放入函數中字符的HTML代碼。
function ctrlspecialchars($subject){
$search = array("<",">","é","à","â","ä","æ","ç","è","ê","ë","ï","î","ò","ó","ô","ö","ø","ù","ú","û","ü","©","®","«","»","¼","½","¾","±","§","¥","£","{","}","$","%");
$replace = array("<",">","é","à","â","ä","æ","ç","è","ê","ë","ï","î","ò","ó","ô","ö","ø","ù","ú","û","ü","©","®","«","»","¼","½","¾","±","§","¥","£","{","}","$","%");
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_enconding
和utf8_decode
函數。
當它起作用時,為每個步驟改回相應的配置並進行測試,因此當代碼再次失敗時,您將發現問題出在哪里。 現在,您可以根據需要配置環境,並僅在有問題的部分上進行工作。
只是FIY,我正在將您的函數與var_dump(ctrlspecialchars("<ó äî ò æ ç % ®>"));
並且我的瀏覽器顯示/var/www/html/replace.php:10:string '<ó äî ò æ ç % ®>' (length=61)
/var/www/html/replace.php:10:string '<ó äî ò æ ç % ®>' (length=61)
/var/www/html/replace.php:10:string '<ó äî ò æ ç % ®>' (length=61)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.