删除重音 - 使用str_replace用无重音的字母替换重音字母

时间:2012-03-04 03:06:20

标签: php str-replace diacritics letters

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从葡萄牙语翻译。

2 个答案:

答案 0 :(得分:1)

删除每个重音字母的简单,安全的方法是使用iconv:

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

您当前的问题很可能是由不同的编码引起的。

答案 1 :(得分:0)

源代码中保存的字符é与您从get_post_custom_values返回的数据不在同一编码中。编码不匹配→未识别为相同字符→未替换。

相关问题