0

私は正規表現がとても苦手ですが、some/path/image.jpg抜け出してhttp://somepage.com/some/...etcこの方法を試しています:

function removeDomain($string) {

    return preg_replace("/http:\/\/.*\//", "", $string);

}

それは機能していません-私が知る限り、空白の文字列を返すだけです。この正規表現をどのように書くのですか?

4

4 に答える 4

5

あなたが使用する必要がありますparse_url

于 2009-10-10T22:00:53.963 に答える
2

正規表現ではなくこれを使用することをお勧めします: http://cz2.php.net/manual/en/function.parse-url.php これにより URL が分割されるため、ドメインの結果の配列を読み取るだけです。名前

于 2009-10-10T22:02:24.030 に答える
1

parse_url他の人がすでに言ったように使用してください。

しかし、正規表現が機能しない理由についての質問に答えるには、何にでも一致するため、URL全体.*に一致し、実際にそうです。URL全体に一致し、空の文字列に置き換えているため、結果が得られます。代わりに、ホスト名 (最初の '/' までのすべて) のみに一致する以下を試してください。

function removeDomain($string) {
    return preg_replace("@^https?://[^/]+/@", "", $string);
}
于 2009-10-10T22:06:49.060 に答える
1

/SilentGhost は正しいですが、正規表現が失敗する理由は .* が貪欲であり、その後がある限りすべてを食べてしまうからです。

?の後にマークを付ける.*と、最初までしか一致しません。/

function removeDomain($string) {

    return preg_replace("/http:\/\/.*?\//", "", $string);

}
于 2009-10-10T22:07:02.163 に答える