【发布时间】:2019-03-31 15:38:11
【问题描述】:
为什么这个调用返回 NULL?
正则表达式错了吗?使用 test 输入时,它不会返回 NULL。
文档说 NULL 表示错误,但它可能是什么错误?
$s = hex2bin('5b5d202073205b0d0a0d0a0d0a0d0a20202020202020203a');
// $s = 'test';
$s = preg_replace('/\[\](\s|.)*\]/s', '', $s);
var_dump($s);
// PHP 7.2.10-1+0~20181001133118.7+stretch~1.gbpb6e829 (cli) (built: Oct 1 2018 13:31:18) ( NTS )
【问题讨论】:
-
你需要在这里做什么?您的
$s没有第二个]因此没有匹配项。还有,(\s|.)*不是必须的,不好用,就用.*(preg_replace("/\[].*]/s", "", $s)) -
在正则表达式周围使用单引号而不是双引号也是一个好主意。否则,您将面临将正则表达式转义序列作为字符串转义序列处理的风险。
-
@WiktorStribiżew 我主要想知道为什么这会返回 NULL。如果不匹配,则应该返回输入,不是吗?
-
如果正则表达式无效,则返回
NULL。 -
(\s|.)有什么意义。.已经匹配\s..