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

最終的なURLで文字列を置き換えるだけです

<?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 に答える