copyloc
@copyloc
Человек то я не глупый, просто притворяюсь

Как же работают эти регулярные выражения?

Допустим есть код:
if (preg_match("/<big> *<b>/i", $value)) {
     /* Выводим что нашел */
}

Если
$value = "<big> <b>"
он нашел их, а если big и b на разных строчках, то выводит что не нашел.

Если звездочка слитно с обоими текстами:
if (preg_match("/<big>*<b>/i", $value)) {
     /* Выводим что нашел */
}

То она вообще игнорируется, то есть условие выполнится если big и b написаны слитно.

Объясните что не так, например, мне нужно проверить, что написано именно так, но big может иметь любые атрибуты, пробелы и т.д. Главное проверить, что есть big, закрывающий тег big и вложенный в него тег b.
<big class = "value">
     <b>
          текст
     </b>
</big>
  • Вопрос задан
  • 2462 просмотра
Решения вопроса 2
@Nc_Soft
<?php
$text = <<<TEXT
<big class = "value">
     <b>
          текст
     </b>
</big>
TEXT;

if (preg_match('~<big[^>]+>\s*<b>(.+)</b>\s*</big>~is', $text, $matches)) {
    print_r($matches);
}

\s = любой пробельный символ
~is = модификаторы, i - регистронезависимость, s - учитывать переносы строк
Ответ написан
@ldvldv
https://regex101.com/r/sT1lJ1/1
Справа, в окошке расписано - что каждая последовательность значит
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mlnkv
@mlnkv
JavaScript Developer
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы