Как заставить str_replace распознавать умлауты в именах файлов, полученных с помощью glob (на Mac)? - PullRequest
1 голос
/ 21 февраля 2011

Я читаю имена файлов из каталога с glob с кодом ниже.

Я хочу перебрать их и заменить символы умлаута другими символами.

Однако str_replace даже не находит символы умлаута, поэтому я предполагаю, что они находятся в каком-либо другом виде кодировки символов.

Это всегда работало в Windows, но я сейчас на Mac , поэтому я попытался преобразовать из "macintosh" в "UTF-8" с помощью iconv, но это не сработало, см. Ниже.

Если я определяю строку с умляутами в коде, , тогда str_replace находит умляуты нормально, но не в строках, извлеченных с помощью glob().

Как заставить str_replace распознавать символы умлаута в строках имен файлов, чтобы я мог их заменить?

$pathAndFileNames = glob($directory . '/*.php');
if (count($pathAndFileNames) > 0) {
    foreach ($pathAndFileNames as $oldName) {

        $newName = str_replace('ü', 'ue', $oldName);
        echo $newName; //outputs "rücktest.php"

        $oldName2 = "rücktest.php";
        $newName2 = str_replace('ü', 'ue', $oldName2);
        echo $newName2; //outputs "ruecktest.php"

    }
}

1 Ответ

1 голос
/ 21 февраля 2011

Я тестировал этот код на своей машине (заметьте, Ubuntu), и у меня не было такой проблемы.У меня есть одно решение для вас.Убедитесь, что ваш скрипт сохранен в кодировке UTF-8.

Я могу повторить вашу проблему при сохранении файла с кодировкой Western-8859-15, но при сохранении файла с кодировкой UTF-8 скрипт работает так, как вы ожидаете.

ПроверьтеРедактор предпочтений и сохранить как функциональность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...