0

preg_match_allを使用してリンクのhrefセクションを一致させる際に問題が発生しました。現在、3つのセクション(フルリンク、URLのみ、リンクテキストのみ)をキャプチャしていますが、URLのみの部分は、hrefの後にある他のタグをキャプチャしています。鬼ごっこ。

また、「href」テキストの大文字と小文字を区別しないようにするにはどうすればよいですか?

コード:

$content = '<a href="http://www.google.com" target="_blank">Google</a> is a search engine. <a href="http://www.yahoo.com" title="yahoo" target="_blank">Yahoo</a> is a search engine.';

preg_match_all('/<a href="([^<]*)">([^<]*)<\/a>/', $content, $matches);

print_r($matches);

結果:

Array
(
    [0] => Array
        (
            [0] => <a href="http://www.google.com" target="_blank">Google</a>
            [1] => <a href="http://www.yahoo.com" title="yahoo" target="_blank">Yahoo</a>
        )

    [1] => Array
        (
            [0] => http://www.google.com" target="_blank
            [1] => http://www.yahoo.com" title="yahoo" target="_blank
        )

    [2] => Array
        (
            [0] => Google
            [1] => Yahoo
        )

)
4

1 に答える 1

2

>を探し始め、他の属性を考慮に入れていません。試す

/<a href="([^"]*)"[^>]+>([^<]*)<\/a>/

これにより、href が引き出され、残りの属性がスキップされ、次のタグのすぐ上の html が引き出されます。

于 2013-02-21T22:37:10.657 に答える