@dura228

Что не так с регулярным выражением для поиска тега h1?

$text="fhdsklf sdoijf ds <h1>jfidsfj</h1> jklsfdjflks";
$pattern ="!<h1>.+</h1>!";
preg_match($text, $pattern, $matches);
print_r($matches);

Код выдает ошибку: "Warning: preg_match(): Delimiter must not be alphanumeric or backslash"
  • Вопрос задан
  • 384 просмотра
Решения вопроса 2
@rodion11
php dev
Нужно местами поменять $pattern и $text
Также советую использовать .+? вместо .+, т.к. в противном случае регулярка будет искать последнее вхождение в строке.
$text="fhdsklf sdoijf ds <h1>jfidsfj</h1> jklsfdjflks";
$pattern ="!<h1>.+?</h1>!";
preg_match($pattern, $text, $matches);
print_r($matches);
Ответ написан
Комментировать
lidacriss
@lidacriss
wtf
preg_match($text, $pattern, $matches);
в preg_match
сначала идет паттерн, потом текст, потом матч

preg_match
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )

Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@DarkByte2015
Регулярки и парсинг хтмл. Никогда так не делай. Надо юзать спец. библиотеки, например тут можно что-нибудь выбрать. Вообще регулярки лучше нигде и никогда не юзать. Говорят используя регулярки ты получаешь сразу две проблемы из одной.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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