php - 如果 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 的网址
解决方案
您可以使用正则表达式来检查链接是绝对 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>";
}
推荐阅读
- r - 处理省略号参数中的缺失值......在R中
- java - 是否可以仅使用 JPA/Hibernate-Annotation 从数据库中检索选定的子列表?
- soap - zeep.exceptions.Fault:服务器无法处理请求。---> 对象引用未设置为对象的实例
- javascript - 通过 obj 映射并调度键和状态值
- javascript - 会话和本地存储是否适合内部应用程序?
- c++ - 每次调用来自 FFMPEG 的 AVIO `read_packet()` 回调时,我们是否必须返回完整的缓冲区?
- javascript - 尝试踢自己(机器人)时显示消息
- shell - 如何防止和优化错误的变量名?
- python - python numpy阈值特定值
- javascript - 如何从我的 API 调用中获取数据到变量中以放入我的 HTML