有一字符串为如下表示:
<span style="color: rgb(102, 102, 102); position: absolute; right: 3px; top: 0pt;">1</span><span style="color: rgb(102, 102, 102); position: absolute; right: 3px; top: 0pt;">2</span><span style="color: rgb(102, 102, 102); position: absolute; right: 3px; top: 0pt;">3</span>请问,怎么写正则表达式把红色的这三个数字提取出来,谢谢。

解决方案 »

  1.   

    正则:
    /<span[^>]+>(.*?)<\/span>/im利用
    preg_match_all(正则表达式,被查找的字符串变量,存储的结果数组变量)
    那么红色部分形成的数组就是你要的结果对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推
      

  2.   

    $str = "<span style=\"color: rgb(102, 102, 102); position: absolute; right: 3px; top: 0pt;\">1 </span> <span style=\"color: rgb(102, 102, 102); position: absolute; right: 3px; top: 0pt;\">2 </span> <span style=\"color: rgb(102, 102, 102); position: absolute; right: 3px; top: 0pt;\">3 </span>"; if(preg_match_all("|<span ([^>]+)>(.*)</[^>]+>|U",$str,$matches)){
    preg_match_all("|<span style=\"color: rgb\(([0-9]{3}, [0-9]{3}, [0-9]{3})\)[^>]+>(.*)</[^>]+>|U",$str,$matches);
    print_r($matches);
    }
      

  3.   

    结果:
    Array ( [0] => Array ( [0] => 1  [1] => 2  [2] => 3  ) [1] => Array ( [0] => 102, 102, 102 [1] => 102, 102, 102 [2] => 102, 102, 102 ) [2] => Array ( [0] => 1 [1] => 2 [2] => 3 ) )