Pour remplacer les « caractères spéciaux », vous devez utiliser iconv: $str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
Comme pour obtenir les valeurs entre les guillemets, voir les autres réponses. Utilisez preg_replace_callback
pour exécuter la conversion ci-dessus sur les correspondances.
EDIT: tout alimentation à la cuiller ensemble:
<?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";
Cet exemple suppose que PHP 5.3. Utilisez "create_function" ou une fonction nommée si vous êtes bloqué sur PHP 5.2 ou ci-dessous.
Avez-vous eu de la chance avec ma solution? – janmoesen