@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"
  • Вопрос задан
  • 352 просмотра
Решения вопроса 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
Регулярки и парсинг хтмл. Никогда так не делай. Надо юзать спец. библиотеки, например тут можно что-нибудь выбрать. Вообще регулярки лучше нигде и никогда не юзать. Говорят используя регулярки ты получаешь сразу две проблемы из одной.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽