2012-03-04 111 views
0

str_replace不會用重音符號代替重音符號。那有什麼問題?刪除重音符號 - 用無重音符號的字母替換重音符號str_replace

這將返回預期的結果:

<?php 
    $string = get_post_custom_values ("text"); 
    // Say get_post_custom_values ​​("text") equals "José José" 
    $string = str_replace(" ", "-", $string); 

    echo $string [0]; 
    // Output "José-José" 
?> 

這不起作用:

<?php 
    $string = get_post_custom_values ("text"); 
    // Say get_post_custom_values ​​("text") equals "Joseph Joseph" 
    $string = str_replace("é", "e", $string); 

    echo $string [0]; 
    // Output "José José". Nothing has changed 
?> 

注:從GOOGLETRANSLATE葡萄牙語翻譯。

+0

請參閱http://stackoverflow.com/questions/1728746/how-to-properly-handle-international-character-in-php-mysql-apache,「PHP」部分。 – 2012-03-04 03:33:46

回答

0

如保存在你的源代碼字符é不在同一編碼當你從get_post_custom_values回數據。編碼不匹配→未被識別爲相同的字符→未被替換。

1

的簡單,安全的方法來消除每一個重音字母是用iconv:

setlocale(LC_ALL, "fr_CA.utf8"); // for instance 
$output = iconv("utf-8", "ascii//TRANSLIT", $input); 

您當前的問題很可能是由不同的編碼造成的。

+0

原理是這樣的。 Ok deceze和Vincent,謝謝你的幫助。 – 2012-03-04 23:04:03