1

我有一个字符串,像这样:

'<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") 不是 "à"

我能做些什么?

4

3 回答 3

1

您需要将您的指定chr(hexdec())为回调。只是调用这些函数并将结果作为参数提供给preg_replace不这样做。

preg_replace_callback('/\\\([a-f0-9]{2})/imu',
                      function ($match) { return chr(hexdec($match[1])); },
                      $text)

话虽如此,可能有更好的方法来做你想做的事情。

于 2012-02-02T12:23:42.513 回答
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;
于 2012-02-02T12:37:00.860 回答
0

你也可以使用

<?php
$str = preg_replace('/\\([a-f0-9]{2})/imue', '"\x$1"', '<indirizzo>Via Universit\E0 4</indirizzo>');
于 2013-03-23T00:39:23.560 回答