PHP5.3预配Umlaute UTF-8改性剂
以下命令在PHP5.3.8 Lamp(ubuntu11.04)-服务器上返回true,但在PHP5.3.2 Lamp(ubuntu10.04.2 LTS)-服务器上返回falsePHP5.3预配Umlaute UTF-8改性剂,utf-8,preg-match,php-5.3,diacritics,Utf 8,Preg Match,Php 5.3,Diacritics,以下命令在PHP5.3.8 Lamp(ubuntu11.04)-服务器上返回true,但在PHP5.3.2 Lamp(ubuntu10.04.2 LTS)-服务器上返回false 我几乎更改了php.ini文件中的所有设置,但没有成功。 我将系统区域设置更改为en_US.UTF-8,并将其作为PHP的默认区域设置。此外,我还尝试了de_de.UTF-8-locale 在这两种情况下,我都使用ubuntu提供的默认软件包 是否有人有其他想法,在不编译任何包的情况下更改什么,这样PHP5.3.2
我几乎更改了php.ini文件中的所有设置,但没有成功。
我将系统区域设置更改为en_US.UTF-8,并将其作为PHP的默认区域设置。此外,我还尝试了de_de.UTF-8-locale
在这两种情况下,我都使用ubuntu提供的默认软件包
是否有人有其他想法,在不编译任何包的情况下更改什么,这样PHP5.3.2也将返回true?一个是添加了:
PCRE_UCP
此选项更改PCRE处理\B
,\B
,\D
,\D
,\S
,\S
,\W
,,
\w
,以及一些POSIX字符类。默认情况下,只有ASCII码
可以识别字符,但如果设置了PCRE_UCP,则Unicode属性
而是用于对字符进行分类。更多详情见
pcrepattern页面中有关泛型字符类型的部分。如果你设定
PCRE_UCP,匹配它影响的项目之一需要更长的时间。这个
只有使用Unicode属性支持编译PCRE时,选项才可用
不幸的是,在PHP中不能用模式修饰符直接触发此选项。如果可用(PHP 5.3.4及更高版本),它将由
u
和PCRE\u UTF8一起设置。Unicode在PHP中还不完全支持
下面的代码
$url='abc αβγ';
define('CONST_REGEX_SANITIZE_URL', '/[^\040\w\/\.\-\:]/u');
$invalid_url = preg_match(CONST_REGEX_SANITIZE_URL, $url) ? 'true' : 'false';
echo $invalid_url;
php>5.3.10时返回“false”
$url='abc αβγ';
define('CONST_REGEX_SANITIZE_URL', '/[^\040\w\/\.\-\:]/u');
$invalid_url = preg_match(CONST_REGEX_SANITIZE_URL, $url) ? 'true' : 'false';
echo $invalid_url;