我有一个PHP 5.3脚本显示我的网站的用户,并希望用它的旧名称替换某个俄罗斯城市(存储在PostgreSQL 8.4.7数据库中的UTF8 + CentOS 5.5/64位Linux)(这是一个内幕笑话) :
preg_replace('/?????????/iu', '??????????', $city);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这仅适用于完全匹配:Волгоград.
这不适用于其他情况,如ВОЛГОГРАД或волгоград.
如果我将源代码修改为
preg_replace('/[??]????????/iu', '??????????', $city);
Run Code Online (Sandbox Code Playgroud)
然后它将赶上上面的第二个案例.
有谁知道它发生了什么以及如何解决它(假设我不想为每个字母写[Xx])?
谢谢!亚历克斯
更新:
# rpm -qa|grep php
php53-bcmath-5.3.3-1.el5
php53-gd-5.3.3-1.el5
php53-common-5.3.3-1.el5
php53-pdo-5.3.3-1.el5
php53-mbstring-5.3.3-1.el5
php53-xml-5.3.3-1.el5
php53-5.3.3-1.el5
php53-cli-5.3.3-1.el5
php53-pgsql-5.3.3-1.el5
# rpm -qa|grep pcre
pcre-6.6-2.el5_1.7
Run Code Online (Sandbox Code Playgroud)