首页 > 解决方案 > 如果 x 不包含 y | 是否有向 x 添加文本的功能?PHP

问题描述

所以我正在研究一个 url 爬虫,但我得到了很多没有域和 http 的路径。如果路径中不包含域和http,我想创建一个函数来添加它。这是我的代码

<?php
$source_url = 'http://www.google.com/';
$html = file_get_contents($source_url);
$dom = new DOMDocument;
@$dom->loadHTML($html);
$links = $dom->getElementsByTagName('a');


foreach ($links as $link) {
    $input_url = $link->getAttribute('href');
    echo $input_url . "<br>";
}



?>

如果没有任何我可以提取包含 http 的网址

标签: phpfunctionurlweb-crawler

解决方案


您可以使用正则表达式来检查链接是绝对 URL 还是相对 URL,即是否包含域。我所做的是检查链接是否以http://或开头https://。如果不是,则将源域添加到链接的开头。

foreach ($links as $link) {
    $input_url = $link->getAttribute('href');

    if (!preg_match('/^https?:\/\//', $input_url)) {
        $input_url = $source_url . preg_replace('/^\//', '', $input_url);
    }

    echo $input_url . "<br>";
}

推荐阅读