如果 x 不包含 y | 是否有向 x 添加文本的函数? PHP
Is there a function to add text to x if x not containing y | 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
的 urls
您可以使用 regular expressions 来检查 link 是绝对的 URL 还是相对的,即是否包含域。我所做的是检查 link 是否以 http://
或 https://
开头。如果不是,则将源域添加到 link.
的开头
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>";
}
所以我正在研究 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
的 urls您可以使用 regular expressions 来检查 link 是绝对的 URL 还是相对的,即是否包含域。我所做的是检查 link 是否以 http://
或 https://
开头。如果不是,则将源域添加到 link.
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>";
}