我有一个字符串,如下所示:
'<indirizzo>Via Universit\E0 4</indirizzo>'
Whit HEX char ...我需要字符串成为:
'<indirizzo>Via Università 4</indirizzo>'
所以,我使用:
$text= preg_replace('/(\\\\)([a-f0-9]{2})/imu', chr(hexdec("$2")), $text);
但是不行,因为hexdec不使用$ 2的值(即'E0'),但只使用值'2'。 因此hexdex(“2”)是“2”而chr(“2”)不是“à”
我该怎么办?
答案 0 :(得分:1)
您需要将chr(hexdec())
指定为回调。只需调用这些函数并将结果作为参数提供给preg_replace
,就不会这样做。
preg_replace_callback('/\\\([a-f0-9]{2})/imu',
function ($match) { return chr(hexdec($match[1])); },
$text)
话虽如此,可能有更好的方法来做你想做的事情。
答案 1 :(得分:1)
$text='<indirizzo>Via Universit\E0 4</indirizzo>';
function cb($match) {
return html_entity_decode('&#'.hexdec($match[1]).';');
}
$text= preg_replace_callback('/\\\\([a-f0-9]{2})/imu', 'cb', $text);
echo $text;
答案 2 :(得分:0)
您也可以使用
<?php
$str = preg_replace('/\\([a-f0-9]{2})/imue', '"\x$1"', '<indirizzo>Via Universit\E0 4</indirizzo>');