Я нашел функцию в MediaWiki Source, которая преобразует строку с умляутами в формат HEX.PHP: преобразовать строку обратно в норму
Теперь я хочу преобразовать форматированную строку обратно в строку с помощью умляутов.
Функция:
$Umlaut = "löschen";
$out = preg_replace_callback("/([\\xc0-\\xff][\\x80-\\xbf]*)/",'stripForSearchCallback', $Umlaut);
function stripForSearchCallback($matches) {
return 'u8' . bin2hex($matches[1]);
}
echo $out;
Выход: "lu8c3b6schen"
Теперь я хочу, чтобы преобразовать "lu8c3b6schen" обратно в "löschen".
Как я могу это сделать, пожалуйста?
Match для hexnum кортежей и использовать 'CHR (HexDec())' в качестве обратного вызова. – mario
Действительно ли ваш выход? Я, хотя этот шестнадцатеричный формат должен быть парой '[a-z0-9]', но у вас есть неравномерный формат '8c3b6'. Может, я что-то упустил? Также обратите внимание, что регулярное выражение, скорее всего, испортит ваше предложение, например, если у вас есть номера в нем 'löschen 65' или последовательные шестнадцатеричные буквы: ** acce ** nt – HamZa
Да, вы правы. Я не считаю его HEX. Mediawiki говорит следующее: «Бронируйте свернутую в очередь строку UTF-8, чтобы пройти через MySQL \t * Полнотекстовый поиск, не сбрасываемый смешными кодировками \t * настройки или что-то в этом роде." - Но я не могу найти какую-либо функцию, способную ее преобразовать. – Steven