Php 如何使用文件获取内容(url)而不替换链接

Php 如何使用文件获取内容(url)而不替换链接,php,web-scraping,Php,Web Scraping,这里没有 因此,我尝试使用文件获取内容($url)进行抓取,但是返回的内容修改了所有链接(删除域名,并添加了许多奇怪的字符,以防锚定HREF和图像SRC) 这是我的想法,在我们通过文件获取内容()刮取之后 删除编码文本/l/?kh=-1&uddg=,然后 提取放在href的所有链接公共链接,对吗?所以在本例中,我使用了preg\u match\u all(参考:) 以下是模式:~href=“([^”]+)”(.*)>~ 循环我们提取的链接并替换为解码url(因为duckduckgo对url进

这里没有

因此,我尝试使用
文件获取内容($url)
进行抓取,但是返回的内容修改了所有链接(删除域名,并添加了许多奇怪的字符,以防锚定HREF和图像SRC)


这是我的想法,在我们通过
文件获取内容()
刮取之后

  • 删除编码文本/l/?kh=-1&uddg=,然后

  • 提取放在href的所有链接公共链接,对吗?所以在本例中,我使用了
    preg\u match\u all
    (参考:) 以下是模式:~href=“([^”]+)”(.*)>~

  • 循环我们提取的链接并替换为解码url(因为duckduckgo对url进行编码)

  • 以下是我的示例代码:

    <?php
    
        $url = 'https://duckduckgo.com/html/?q=foo+bar';
    
        $file = file_get_contents($url);
        $file = str_replace("/l/?kh=-1&amp;uddg=", "", $file);
    
        preg_match_all('~href="([^"]+)"(.*?)>~', $file, $matches);
    
        foreach ($matches[1] as $key => $link) 
        {
            $file = str_replace($link, urldecode($link), $file);
        }
    
        var_dump ($file);
        die();
    

    这是我的想法,在我们通过
    文件获取内容()
    刮取之后

  • 删除编码文本/l/?kh=-1&uddg=,然后

  • 提取放在href的所有链接公共链接,对吗?所以在本例中,我使用了
    preg\u match\u all
    (参考:) 以下是模式:~href=“([^”]+)”(.*)>~

  • 循环我们提取的链接并替换为解码url(因为duckduckgo对url进行编码)

  • 以下是我的示例代码:

    <?php
    
        $url = 'https://duckduckgo.com/html/?q=foo+bar';
    
        $file = file_get_contents($url);
        $file = str_replace("/l/?kh=-1&amp;uddg=", "", $file);
    
        preg_match_all('~href="([^"]+)"(.*?)>~', $file, $matches);
    
        foreach ($matches[1] as $key => $link) 
        {
            $file = str_replace($link, urldecode($link), $file);
        }
    
        var_dump ($file);
        die();
    

    hi,感谢您的回答,关于搜索api,它不会返回json格式的搜索结果(当给出format=json时),但在我删除&format=json时会正常返回。所以,在搜索了一段时间后,发现它只是一个答案api,不是搜索,对吗?或者有希望让它工作吗?嗨,谢谢你的回答,关于搜索api,它不会返回json格式的搜索结果(当format=json被给出时),但是当我删除&format=json时,它会正常返回。所以,在搜索了一段时间后,发现它只是一个答案api,不是搜索,对吗?或者有什么希望让它工作吗?再见亲爱的苏布拉塔-我喜欢你的方法-它看起来很精致。感谢您与我们分享您的想法和代码!!!你好亲爱的苏布拉塔-我喜欢你的方法-它看起来很精致。感谢您与我们分享您的想法和代码!!!
    
    <a class="result__url" href="https://en.wikipedia.org/wiki/Foobar">
                      en.wikipedia.org/wiki/Foobar
                      </a>
    
    <?php
    
        $url = 'https://duckduckgo.com/html/?q=foo+bar';
    
        $file = file_get_contents($url);
        $file = str_replace("/l/?kh=-1&amp;uddg=", "", $file);
    
        preg_match_all('~href="([^"]+)"(.*?)>~', $file, $matches);
    
        foreach ($matches[1] as $key => $link) 
        {
            $file = str_replace($link, urldecode($link), $file);
        }
    
        var_dump ($file);
        die();