php - 如何获取完整的url?

标签 php

$html = file_get_contents("any site");
$dom = new domDocument;
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');

foreach ($images as $image) {
   echo $image->src;
}

不给我任何返回

$html = file_get_contents("any site");
$dom = new domDocument;
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');

foreach ($images as $image) {
   echo $image->getAttribute('src');
}

返回相对网址,如“/images/example.jpg

$html = file_get_contents("any site");
$dom = new domDocument;
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');

foreach ($images as $image) {
   echo $image.src;
}

返回给我:

Fatal error: Call to undefined function getElementsByTagName()

那么,如何获得绝对路径呢?

最佳答案

您可以使用parse_url查找基本 URL:

$url = 'http://www.example.com/path?opt=234';
$parts = parse_url($url);
if (isset($parts['scheme'])){
    $base_url = $parts['scheme'].'://';
} else {
    $base_url = 'http://';
    $parts = parse_url($base_url.$url);
}
$base_url .= $parts['host'];
if (isset($parts['path'])){
    $base_url .= $parts['path'];
}

然后将其与您的代码结合起来,如下所示:

$html = file_get_contents("any site");
$dom = new domDocument;
@$dom->loadHTML($html);
$dom->preserveWhiteSpace = false;
$images = $dom->getElementsByTagName('img');

foreach ($images as $image) {
   echo $base_url.$image->getAttribute('src');
}

关于php - 如何获取完整的url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17380354/

相关文章:

php - undefined variable ,php 代码有问题

php - Laravel 在 Controller 中获取 url 的参数

php - SELECT...IN ($csv) 还是遍历数组更好?

php - 如何完成此登录脚本?

php - 我正在用 PHP 生成一个 word 文档,如何进行分页?

php - 智能抓取第一段/起始文本

php - 在通过 AJAX 动态添加一些内容后,如何将当前页面转换为 pdf?

php - TYPO3 中的 FlexForm 未显示可切换 Controller 操作中的元素

php - 上传 CSV 并用外键替换数据

php - 是否可以在不修改 ini 文件的情况下从 PHP cli 界面加载扩展?