0

我目前正在尝试在 PHP 中的空字符串上进行匹配,当前运行应该匹配not并且为空,但我似乎只能出于某种原因''让它匹配?not有人可以告诉我我做错了什么吗?

preg_match('/^\bnot|$/', 'not', $matches);
print_r($matches);  // array(0 => 'not') // correct

preg_match('/^\bnot|$/', '', $matches);
print_r($matches);  // array(0 => '') // maybe right ?

preg_match('/^\bnot|$/', 'foo', $matches);
print_r($matches);  // array(0 => '') // deff messed up
4

2 回答 2

1

那是因为您试图错误地匹配空字符串。你的正则表达式应该是。

^$|pattern

并且使用\b(单词边界),这匹配从\w(单词字符)到\W(非单词字符)。它实际上是一个零宽度匹配(空字符串),但只匹配单词边界中特定位置的那些字符串

于 2013-09-11T00:45:14.693 回答
0

如果要确定字符串是否为空,请不要使用 preg_match。使用 strlen();

$string = '';
$strlen = strlen($string);
if ($strlen === 0) {
    // $string is empty
}
于 2013-09-11T00:15:35.367 回答