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) ""
}
}
回复内容:
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) ""
}
}
在
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
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载