Для проекта мне нужно получить содержимое веб-сайта и изменить код HTML. Каждая ссылка на этом веб-сайте должна быть заменена моей собственной. Я использовал str_replace
, пока не понял, что ссылки иногда имеют назначенные им классы.preg_replace добавить собственный сайт перед каждой гиперссылкой
Я пробовал функцию preg_replace
, чтобы добавить свой собственный сайт перед каждой ссылкой href, которая также находится между <a>
</a>
тегами. Не имеет значения, содержит ли выбранный веб-сайт в $content
href=""
или href=''
.
$content = preg_replace('~(<a\b[^>]*\shref=")([^"]*)(")~igs', '\1http://website.com/fetch.php?url=\2\3', $content);
Это не работает, и я не могу найти ошибку. Он должен вести себя следующим образом:
<a class="link" href="http://google.com">Google</a>
должен превратиться в
<a class="link" href="http://website.com/fetch.php?url=http://google.com">Google</a>
Может кто-то помочь мне найти ошибку? Заранее спасибо.
Не используйте регулярное выражение, вы столкнетесь с подобными проблемами, которые вы нашли с 'str_replace'. Используйте синтаксический анализатор. Кроме того, если вы не используете функцию, вам не нужно 'preg_replace_callback',' preg_replace' заменит .... Также не существует модификатора 'g' в PHP. Функции глобальны. – chris85
В заменяющей строке предпочтительнее использовать '$ 1',' $ 2' и т. Д. – Barmar
Возможный дубликат [Как вы анализируете и обрабатываете HTML/XML в PHP?] (Http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php) – chris85