Задать вопрос

Почему пустое регулярное выражение всегда возвращает true?

$uri = 'contacts';

var_dump(preg_match('//', $uri)); // true

Но ведь строка не пустая
  • Вопрос задан
  • 79 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что данное регулярное выражение трактуется как "строка содержит пустую подстроку" и является истинным для любой строки. Выражение "строка является пустой" выглядит как /^$/, но гораздо проще проверить обычным равенством ($url === '').
Ответ написан
Комментировать
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
<?php
$uri = 'contacts';

var_dump(preg_match('//', $uri, $out)); // true
var_dump($out);


Потому что при такой постановке задачи вы находите строку нулевой длины в исходной строке
int(1)
array(1) {
  [0]=>
  string(0) ""
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы