2014-10-04 2 views
0

Pretty self пояснительный: что происходит? Почему эта строка (2 casted) возвращает совпадение, но пустое? Вместо простого пустого массива?preg_match неправильный результат

php > preg_match("/[a-z\s\']*/", (string)2, $matches); 
php > var_dump($matches); 
array(1) { 
    [0]=> 
    string(0) "" 
} 
php > 
+0

http://php.net/manual/en/function.preg-match.php –

ответ

2

Поскольку вы используете *, что указывает на регулярное выражение должно соответствовать 0 или более вхождений класса символов. Он соответствует нулевым вхождениям в строке и считывает их в массив соответствия.

+0

ОПС !! черт возьми, спасибо. Мне лучше отдохнуть. –

1

* соответствует нулю или более предшествующего токена. Поскольку это все, что вам нужно, строка с нулевой длиной соответствует. Если вы не хотите совпадений, замените * на +, чтобы потребовать хотя бы один из предшествующих токенов.

Смежные вопросы