2

我正在从头开始制作一个搜索引擎(大声笑),我坚持这个问题:

当用户提交 URL 时,我的“蜘蛛”会“抓取”它以获取其他链接。有些人当然使用<a href="/page">而不是<a href="http://long-domain.com/page">,所以我用 if(substr($link->getAttribute('href'), 0, 1) == '/')

并在其前面添加一个域。但是,每当我添加一个域时,一些链接就会变成http://php.net//abcd. 如您所见,它的//.

现在,我的想法是让我的脚本编辑提交的 URL,所以如果它最后有一个斜杠,它将被删除,但我不知道如何删除它。

4

2 回答 2

11

您可以使用rtrim

$url = rtrim($url, '/');

它将删除/字符串末尾的所有内容,如果没有则保持不变

于 2013-03-10T12:48:17.877 回答
1

只需在最终网址上进行字符串替换

<?php $final_url=str_replace("//","/",$your_link_to_be_crawled); ?>

这很简单。

在它影响 http:// 后把 // 放回去,

让我们做preg_replace

<?php
$your_url_to_crawl;
$patterns = array(); $patterns[0] = '/http:/';$patterns[1] = '/https:/'; $patterns[2] = '/any_other_protocol/';
$replacements = array(); $replacements[2] = 'http://'; $replacements[1] = 'https://';$replacements[0] = 'any_other_protocol';
echo preg_replace($patterns, $replacements, $your_url_to_crawl);

?>

于 2013-03-10T12:58:31.863 回答