• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

为什么php中的*会匹配到null,是php的bug吗,还是其它语言也会这样?

php 搞代码 3年前 (2022-01-25) 23次浏览 已收录 0个评论
文章目录[隐藏]
<code>php > preg_match_all('/.*/',null,$arr);php > print_r($arr);Array(    [0] => Array        (            [0] =>         ))php > var_dump($arr);array(1) {  [0]=>  array(1) {    [0]=>    string(0) ""  }}php > preg_match_all('/.+/',null,$arr);php > var_dump($arr);array(1) {  [0]=>  array(0) {  }}php > preg_match_all('/.*/U','Love',$arr);php > var_dump($arr);array(1) {  [0]=>  array(9) {    [0]=>    string(0) ""    [1]=>    string(1) "L"    [2]=>    string(0) ""    [3]=>    string(1) "o"    [4]=>    string(0) ""    [5]=>    string(1) "v"    [6]=>    string(0) ""    [7]=>    string(1) "e"    [8]=>    string(0) ""  }}</code>

回复内容:

<code>php > preg_match_all('/.*/',null,$arr);php > print_r($arr);Array(    [0] => Array        (            [0] =>         ))php > var_dump($arr);array(1) {  [0]=>  array(1) {    [0]=>    string(0) ""  }}php > preg_match_all('/.+/',null,$arr);php > var_dump($arr);array(1) {  [0]=>  array(0<em>8本文来源gao.dai.ma.com搞@代*码(网$</em><pre>搞代gaodaima码

) { }}php > preg_match_all(‘/.*/U’,’Love’,$arr);php > var_dump($arr);array(1) { [0]=> array(9) { [0]=> string(0) “” [1]=> string(1) “L” [2]=> string(0) “” [3]=> string(1) “o” [4]=> string(0) “” [5]=> string(1) “v” [6]=> string(0) “” [7]=> string(1) “e” [8]=> string(0) “” }}

在PHP里面 . .表示任意字符 表示任意位 ,既然是任意位 0位也可以,null,不匹配任意字符,那正好是0位,10位也是任意位,所以是你没有正则理解正则

php是门弱类型语言, preg_match的第二个参数是字符串, 所以null被直接解析成了空字符串。

https://github.com/php/php-src/blob/PHP-5.6.16/ext/pcre/php_pcre.c#L569


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:为什么php中的*会匹配到null,是php的bug吗,还是其它语言也会这样?
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址