URLを正規化してからPerl正規表現を使用してデータベースに格納する必要があります。ここでURL Perlでの正規表現
は、いくつかの例のURLです:
しかし、私だけではなく、 foo//
にfooの後//
を除去する以下のコードを、しようとするたびに、それは意志http://
の二重スラッシュも削除します。 //
をhttp://
に保存する必要がありますが、foo//
の後ろには転送先の//
は必要ありません。また、URLのどこにでも表示される/../
または/./
をすべて削除する必要があります。
基本的には、この:
"http://www.codeme.com:123/../foo//bar.html"
はこのなった場合:
"http://www.codeme.com/foo/"
私は、私はいつもそれを無視し、私はそれはしかし、人生は私が間違って証明している必要は決してありませんことを考えたPerlに非常に新しいです。あなたが私を正しい道に導くことができれば、私は本当にあなたの助けに感謝します。
sub main
{
my $line;
open(FH, "test.txt");
until(($line = <FH>) =~ /9/) {
$line =~ tr/A-Z/a-z/;
$line =~ s|//|/| ;
$line =~ s|\:\d\d\d|| ;
$line =~ s|:80||;
print $line;
}
close FH;
}
私はあなたが達成するために探している正規化が全く明確であることはよく分かりません。 'www.codeme.com:123'は' www.codeme.com'に正規化されません。 '/../ foo // bar.html'は'/foo'に正規化されません。 '/..// foo/bar.html'は'/'に正規化されます。おそらく、あなたはそれが非標準的であるように見えるので、あなたが達成しようとしているものを精緻化しようとするべきです。 –
これは本当にできません。 URLパスは実際にはファイルシステムパスではなく、ファイルに直接マップすると仮定しないでください。 HEADリクエストを行い、代わりにLocationヘッダーが何を参照しているのかを確認することができます。 –