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
$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 に答える
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 に答える
0

使用することもできます

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