正则表达式制作刮刀

时间:2014-11-17 18:49:26

标签: regex

我想制作一个抓取器从某些网站获取所有<a id href="">...</a>元素,并且元素的格式为:

<a id href="/model.aspx?modelid=886874">Samsung Galaxy Note 4 SM-N910F</a>

而且一直在变化的是?modelid=integer。如何为此制作正则表达式?

2 个答案:

答案 0 :(得分:0)

试试这个:

$re = "/<a[^\"]*href=\"([^\"]*)\"[^>]*>([^<]+)<\\/a>/mi";
$str = "<a id href=\"sjdkg\">...</a>\n<a id href=\"sjdkg\">.dg..</a>";

preg_match_all($re, $str, $matches);


$matches[1]; // for href
$matches[2]; // for innertext
var_dump($matches);

<强>输出:

array
  0 => 
    array
      0 => string '<a id href="sjdkg">...</a>' (length=26)
      1 => string '<a id href="sjdkg">.dg..</a>' (length=28)
  1 => 
    array
      0 => string 'sjdkg' (length=5)
      1 => string 'sjdkg' (length=5)
  2 => 
    array
      0 => string '...' (length=3)
      1 => string '.dg..' (length=5)

live demo

答案 1 :(得分:0)

这是你需要的正则表达式: modelid \ = \ d \ d \ d \ d \ d \ d \&#34;&GT;&LT(。*); / A&GT;

Regex screenshot

Regex Explanation