У меня возникли проблемы с регулярным выражением, с которыми, я уверен, кто-то здесь может мне помочь.
Я пересматриваю веб-страницу и хочу найти первый экземпляр ссылки WordPress. Так, например, у меня есть что-то вроде этого:
preg_match("/<link\shref=.+\/wp-content\/themes\/(.+)\//", $site, $match);
Проблема в том, что есть страницы, на которых есть изображения с сайтов WordPress с одинаковыми wp-content/theme
структура, то что происходит, регулярное выражение ловит первый <link
на странице и идет вниз по странице до wp-content/theme/
изображение, и дает мне ложный положительный результат.
Я пытался это исправить, но я не могу добиться успеха. Я думал о том, чтобы как-то пересмотреть голову и искать только там, но я не смог этого сделать.
Что мне действительно нужно сделать, это найти <link
затем найдите следующий >
и только если wp/content/
существует между ними, дайте мне положительный результат.
Я не очень хорошо осведомлен о регулярных выражениях. Я знаю основы, я думаю, но этот может быть немного вне моей досягаемости.
Я был бы признателен за любой вклад здесь, я уверен, что есть простой способ сделать это.
Спасибо
Здесь есть две проблемы, только одна из которых вы спрашиваете.
Проблему, о которой вы спрашиваете, можно решить, сказав: «Продолжайте, пока не найдете >
которая может быть решена с помощью [^>]+
вместо .+
Другая проблема заключается в том, что вы используете регулярное выражение для анализа HTML. Вместо этого используйте HTML-библиотеку.
Других решений пока нет …