#php
#php
Вопрос:
Я использую PHP для получения контента с внешнего веб-сайта.
Я хочу знать, возможно ли найти и заменить строки из вывода, чтобы я мог сделать все ссылки абсолютными.
Мне нужно преобразовать «/ и ‘/ в «$url/
Если это возможно сделать, я могу придумать, как сделать остальное. Хотя я не знаю, возможно ли это.
Спасибо
Ответ №1:
Для простой замены строки используйте str_replace()
, например
$html = str_replace(array("'/", '"/'), array("'$url/", '"' . $url . '/'), $html);
Если вам нужно более надежное решение, я бы предложил загрузить HTML-строку в DOMDocument, перебрать все теги с, href
начиная с /
, и изменить атрибут каждого перед записью HTML.
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$anchors = $xpath->query('//*[starts-with(@href, "/")]');
foreach ($anchors as $anchor) {
$href = $anchor->getAttribute('href');
$anchor->setAttribute('href', $url . $href);
}
$html = $doc->saveHTML();
Вероятно, вы захотите сделать то же самое для тегов с src
атрибутами.
Ответ №2:
Вы также могли бы использовать preg_replace(), хотя синтаксический анализ DOMDocument является наиболее надежным.
Комментарии:
1. Я просто предоставил дополнительную информацию и проголосовал за нее? В самом принятом ответе упоминается str_replace , что является тем же самым, просто менее мощным, если вы хотите обрабатывать пробелы и т.д….