PHP-十六进制字符上的 preg_replace
我有一个字符串,如下所示:
'
Whit HEX char...我需要字符串变为:
'
所以,我使用:$text= preg_replace('/(\\\\)([a-f0-9]{2})/imu', chr(hexdec("$2")), $text);
但不起作用,因为 hexdec 不使用 $2 的值(即“E0”),而仅使用值“2”。 所以 hexdex("2") 是 "2" 而 chr("2") 不是 "à"
我能做什么?
i have a string, like this:
'<indirizzo>Via Universit\E0 4</indirizzo>'
Whit HEX char... i need string become:
'<indirizzo>Via Università 4</indirizzo>'
So, i use:$text= preg_replace('/(\\\\)([a-f0-9]{2})/imu', chr(hexdec("$2")), $text);
But dont work because hexdec dont use value of $2 (that is 'E0'), but use only value '2'.
So hexdex("2") is "2" and chr("2") isnt "à"
What can i do?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您需要将
chr(hexdec())
指定为回调。仅调用这些函数并将结果作为参数提供给preg_replace
并不能做到这一点。话虽如此,可能有更好的方法来完成您总体想做的事情。
You need to specify your
chr(hexdec())
as a callback. Just calling those functions and suppling the result as parameter topreg_replace
doesn't do it.Having said that, there are probably better ways to do what you want to do overall.
你也可以使用
You could also use