PHP正则在windows和linux下结果不一致?

$text = 'ComposerComposer 是 PHP 中用来管理依赖(dependency)关系的工具简单来说,Composer就是一个百宝袋,想用什么功能,直接一键安装拿来用即可比如:「验证码」、「图片水印」等作为phper,composer是必须的工具!composer中文网:http://www.phpcomposer.com composer下载地址:https://getcomposer.org/download 安装成功示例(下载地址中有安装方法):修改composer源为国内镜像,提高下载速度:composer config -g repo.packagist composer https://packagist.phpcomposer.com寻找想要的包:https://packagist.org  我们找一个验证码包来试一试:国内带Google字样的就... passss我们选择第四个:gregwar/captcha安装包点进去后,会有具体安装方法composer require gregwar/captcha我们创建一个新的目录,并使用cmd切换到该目录cd C:\www\test\demo使用composer执行包安装:composer require gregwar/captcha执行成功后,我们的文件夹会变成这样:我们在当前目录创建一个index.php,具体使用这个包生成一个验证码吧具体使用文档,每个包下面都会有具体介绍,亦或者会有文档地址当前包的地址:https://packagist.org/packages/gregwar/captcha浏览器输出前文推荐:使用composer安装laravel:使用composer安装指定版本的laravel';

preg_match_all( '/.{1}/u', $text, $words_array );

var_dump($words_array);

上述代码在windows下php7.0和php7.2下的运行结果:

图片描述

在linux下运行结果(PHP7.0):

图片描述

Linux下的PHP扩展目录:

[PHP Modules]
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
readline
Reflection
session
shmop
SimpleXML
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
xsl
zip
zlib

[Zend Modules]

已知

如果把正则/.{1}/u修改成/.{1}/就可以分隔,但是如果不加模式修正符u,中文会被分隔开
图片描述

会是这个原因吗?

阅读 2.8k
1 个回答

我的linux可以运行,是php7 并不清楚你的怎么回事

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题