Чтобы заменить «специальные символы», вам необходимо использовать iconv : $str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
Что касается получения значений между кавычками, см. Другие ответы. Используйте <a href="http://php.net/preg_replace_callback" rel="nofollow noreferrer">preg_replace_callback</a>
, чтобы выполнить приведенное выше преобразование для совпадений.
РЕДАКТИРОВАТЬ: кормить все вместе ложкой:
<?php
$input = 'ööbik';
$expected = 'ööbik';
// Set the locale of your input here.
setlocale(LC_ALL, 'en_US');
// Convert using a callback.
$output = preg_replace_callback('/href="([^"]+)"/', function ($matches) {
return iconv('UTF-8', 'ASCII//TRANSLIT', $matches[0]);
}, $input);
echo "Input: $input\n";
echo "Expected: $expected\n";
echo "Output: $output\n";
В этом примере предполагается, что PHP 5.3. Используйте «create_function» или именованную функцию, если вы застряли на PHP 5.2 или ниже.