Я выполняю команду оболочки openssl из PHP и получаю следующую строку как сегмент выходной строки из этого: 'Divisi\xC3\xB3n TeleComunicaciones'
, Насколько я понимаю, есть испанские символы, замененные их буквальными кодами UTF-8.
Мне нужно заменить коды на их испанские эквиваленты символов. Полученная строка должна выглядеть следующим образом: «División TeleComunicaciones»?
Я перепробовал много функций преобразования строк PHP, но ни одна из них не удалась.
Я также заметил одну вещь. Когда я определяю переменную как
$var = "Divisi\xC3\xB3n TeleComunicaciones"
оно отражено правильно («División TeleComunicaciones»)
Но если я возьму значение из вывода команды оболочки openssl, оно всегда печатается как 'Divisi\xC3\xB3n TeleComunicaciones'
,
Кто-нибудь может посоветовать, пожалуйста, есть ли в PHP какие-либо встроенные средства для этой цели?
Поскольку это одиночная строка с экранированием байтов, вы можете преобразовать их с помощью регулярного выражения:
echo preg_replace("#(\\\x[0-9A-F]{2})#e", "chr(hexdec('\\1'))", $var);
Других решений пока нет …