正規表現を使用して1つのリンクのみを引き出す

php regex
正規表現を使用して1つのリンクのみを引き出す

こんにちは、私は次のコードを持っていますが、wwwを持つリンクのみを引き出したいです。 それらの中に

 Text < href="http://url.com/link/">link text more text < href="http://www.anotehrurl.com/">more link text and < href="http://www.anotherurl.com/sub/sub/link.html">link text. more text < href="http://keepurl.co.uk/link/">link text more text < href="http://www.anotherurl.com/sub/sub/link.html">link text. < href="http://www.anotherurl.com/sub/sub/link.html">link text.  < href="http://www.anotehrurl.com/">more link text

reg式を使用するim:

(([\d\D]*?)<\/a>)

基本的に、wwwで始まるリンクと一致し、keepurl.co.uk / …​…​.であるリンクとは一致しません。

私はこれをルーブルに通し、次のように出てきました:

\ {結果1

  1. <href = “http://www.anotehrurl.com/”>リンクテキストの追加2.リンクテキストの追加結果2

  2. <href = “http://www.anotherurl.com/sub/sub/link.html”>リンクテキスト。 その他のテキスト<href = “http://keepurl.co.uk/link/”>リンクテキスト2.リンクテキスト結果3

  3. <href = “http://www.anotherurl.com/sub/sub/link.html”>リンクテキスト。 <href = “http://www.anotherurl.com/sub/sub/link.html”>リンクテキスト。 <href = “http://www.anotehrurl.com/”>リンクテキストの追加2.リンクテキストの追加}

あなたが私が望む以上に引き抜くのを見ることができるので。

乾杯

  1  0


ベストアンサー

これはどうですか:

        Text < href="http://url.com/link/">link text more text
       < href="http://www.anotehrurl.com/">more link text
       and < href="http://www.anotherurl.com/sub/sub/link.html">link text.
       more text < href="http://keepurl.co.uk/link/">link text more text
       < href="http://www.anotherurl.com/sub/sub/link.html">link text.
       < href="http://www.anotherurl.com/sub/sub/link.html">link text.
       < href="http://www.anotehrurl.com/">more link text
END;


        $r = '#href=\"http://(www\.[^\"]*)\">(.+)

出力:

array
  0 => string 'www.anotehrurl.com/' (length=19)
  1 => string 'www.anotherurl.com/sub/sub/link.html' (length=36)
  2 => string 'www.anotherurl.com/sub/sub/link.html' (length=36)
  3 => string 'www.anotherurl.com/sub/sub/link.html' (length=36)
  4 => string 'www.anotehrurl.com/' (length=19)
array
  0 => string 'more link text' (length=14)
  1 => string 'link text' (length=9)
  2 => string 'link text' (length=9)
  3 => string 'link text' (length=9)
  4 => string 'more link text' (length=14)

1


//i

そんな感じ。

0


`$ string`変数にテキストが保存されていると仮定すると、これはうまくいくはずです。

preg_match('@href="(http://www\.(?!keepurl.co.uk).*?)"@i', $string, $m);

`($!regex)`が行うこと:

_
ゼロ幅の負の先読み。 正の先読みと同じですが、先読み内の正規表現が一致しない場合にのみ全体の一致が成功します。
_

優れたhttp://www.regular-expressions.info/refadv.html [正規表現のリファレンスページ]。

0


タイトルとURLをコピーしました