首頁 > 後端開發 > php教程 > 不同版本PHP的PCRE在UTF8编码下的问题

不同版本PHP的PCRE在UTF8编码下的问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
發布: 2016-06-06 20:39:47
原創
1252 人瀏覽過

平台:
系统版本: OS X Yosemite 10.10.1
内核版本: Darwin 14.0.0

PHP代码(文件的编码是UTF-8的)

<code>$str = '自此直至2010年n'; 
preg_match_all('/(\w+)/u', $str, $matches);
print_r($matches[0]);
</code>
登入後複製
登入後複製

PHP 5.5.14(MAC默认)
PCRE版本:PCRE Library Version 8.02 2010-03-19
输出:

<code>Array
(
    [0] => 2010
    [1] => n
)
</code>
登入後複製
登入後複製

PHP 5.4.36(brew安装)
PCRE版本:PCRE Library Version 8.32 2012-11-30
输出:

<code>Array
(
    [0] => 自此直至2010年n
)
</code>
登入後複製
登入後複製

请问这2个版本的差异如何避免呢?

回复内容:

平台:
系统版本: OS X Yosemite 10.10.1
内核版本: Darwin 14.0.0

PHP代码(文件的编码是UTF-8的)

<code>$str = '自此直至2010年n'; 
preg_match_all('/(\w+)/u', $str, $matches);
print_r($matches[0]);
</code>
登入後複製
登入後複製

PHP 5.5.14(MAC默认)
PCRE版本:PCRE Library Version 8.02 2010-03-19
输出:

<code>Array
(
    [0] => 2010
    [1] => n
)
</code>
登入後複製
登入後複製

PHP 5.4.36(brew安装)
PCRE版本:PCRE Library Version 8.32 2012-11-30
输出:

<code>Array
(
    [0] => 自此直至2010年n
)
</code>
登入後複製
登入後複製

请问这2个版本的差异如何避免呢?

去掉 u 修饰符就好了,DEMO: http://3v4l.org/c0469

u (PCRE_UTF8)

此修正符打开一个与 perl 不兼容的附加功能。 模式字符串被认为是utf-8的. 这个修饰符 从 unix 版php 4.1.0 或更高,win32版 php 4.2.3 开始可用。 php 4.3.5 开始检查模式的 utf-8 合法性。
- 模式修饰符

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
怎麼學好php
來自於 1970-01-01 08:00:00
0
0
0
PHP擴充intl
來自於 1970-01-01 08:00:00
0
0
0
php數據獲取?
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板