我有一个我以前没见过的问题。同一个正则表达式在两个不同的服务器上产生两个不同的结果。
这是代码:
preg_replace('#[^\pL0-9_@-]#iu', '', '!%&abc123_æøå');
服务器A上的结果(php 5.2.6,服务器Api:Apache 2.0处理程序):
abc123_æøå
服务器B上的结果(php 5.2.5,服务器Api:CGI / FastCGI):
123_
任何有关为何发生这种差异的想法?
答案 0 :(得分:2)
这必须是因为
答案 1 :(得分:1)
您可以尝试使用mb_eregi_replace功能。
mb_eregi_replace('[^\pL0-9_@-]', '', '!%&abc123_æøå');
应该在支持多字节字符串的所有服务器上一致地工作,并且应该消除由于不同的文件编码而可能获得的问题。 (理论上,至少。)
答案 2 :(得分:0)
好吧,它终于解决了。服务器从php 5.2.5升级到5.2.11(尽管仍以cgi运行),旧版本的问题也随之消失。
感谢大家的反馈和建议!