0

最初の src 属性を取得したいのですが、この正規表現を使用していますが、すべての src 属性をスクレイピングしています:

(?<=src=").*?(?=")

例:

<img src="http://ia.media-imdb.com/images/M/MV5BMTY3NjY0MTQ0Nl5BMl5BanBnXkFtZTcwMzQ2MTc0Mw@@._V1_SY317_CR0,0,214,317_AL_.jpg" />
<img src="http://ia.media-imdb.com/images/M/MV5BMjAzODk4OTI3Ml5BMl5BanBnXkFtZTgwMzU2MTY0MzE@._V1_SX86_CR0,0,86,86_AL_.jpg" />
<img src="http://ia.media-imdb.com/images/M/MV5BNzUzNzY1NzQxM15BMl5BanBnXkFtZTgwMTM0MTY0MzE@._V1_SY86_CR33,0,86,86_AL_.jpg" />
<img src="http://ia.media-imdb.com/images/M/MV5BMTAxNTAwMTg0ODReQTJeQWpwZ15BbWU4MDMzNDE2NDMx._V1_SY86_CR33,0,86,86_AL_.jpg" />
4

3 に答える 3

1

img src2 つの方法で最初の属性の値を取得できます。

  1. 捕獲グループを通じて。

    (?s)^(?:(?!<img\b[^<>]*?\bsrc=).)*<img\b[^<>]*?\bsrc="([^"]*)"
    

img srcグループ インデックス 1 から属性の値を取得します。

デモ

  1. スルー\Kおよびポジティブ先読みアサーション

    (?s)^(?:(?!<img\b[^<>]*?\bsrc=).)*<img\b[^<>]*?\bsrc="\K[^"]*(?=")
    

img srcグループ インデックス 0 から属性の値を取得します。

デモ

于 2014-11-21T09:13:25.247 に答える
0
^((?!\bsrc\b).)*src="([^"]+)

これを試してください。キャプチャを取得してください。デモをご覧ください。

http://regex101.com/r/xN4qL9/3

于 2014-11-21T09:11:34.713 に答える
0

これを試して:

  $re = "/src=[\"'](?<src>[^<>\"']+)['\"]/";
    $str = "<img src=\"http://ia.media-imdb.com/images/M/MV5BMTY3NjY0MTQ0Nl5BMl5BanBnXkFtZTcwMzQ2MTc0Mw@@._V1_SY317_CR0,0,214,317_AL_.jpg\" />\n<img src=\"http://ia.media-imdb.com/images/M/MV5BMjAzODk4OTI3Ml5BMl5BanBnXkFtZTgwMzU2MTY0MzE@._V1_SX86_CR0,0,86,86_AL_.jpg\" />\n<img src=\"http://ia.media-imdb.com/images/M/MV5BNzUzNzY1NzQxM15BMl5BanBnXkFtZTgwMTM0MTY0MzE@._V1_SY86_CR33,0,86,86_AL_.jpg\" />\n<img src=\"http://ia.media-imdb.com/images/M/MV5BMTAxNTAwMTg0ODReQTJeQWpwZ15BbWU4MDMzNDE2NDMx._V1_SY86_CR33,0,86,86_AL_.jpg\" />";

    preg_match($re, $str, $matches);
    var_dump( $matches['src']);

出力:

string 'http://ia.media-imdb.com/images/M/MV5BMTY3NjY0MTQ0Nl5BMl5BanBnXkFtZTcwMzQ2MTc0Mw@@._V1_SY317_CR0,0,214,317_AL_.jpg' (length=114)

ライブデモ

于 2014-11-21T09:34:49.837 に答える