Удалить акценты - заменить акцентированные буквы на буквы без акцентов с помощью str_replace - PullRequest
0 голосов
/ 04 марта 2012

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 ]

1 голос
/ 04 марта 2012

Простой и безопасный способ удалить все буквы с акцентом - это использовать iconv:

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

Ваша текущая проблема, скорее всего, вызвана другой кодировкой.

0 голосов
/ 04 марта 2012

Символ é, сохраненный в исходном коде, не совпадает с кодировкой с данными, полученными вами от get_post_custom_values.Кодировка не соответствует → не распознается как тот же символ → не заменяется.

...