$str = "<IMG src=\"/eicms/wwwroot/resources/12/2006101207263154.jpg\" border=0><IMG src=\"/eicms/wwwroot/resources/1/20061012023459298.jpg\" border=0>";
$regExt = "/\ssrc=\"([^\"]*)\"/iUs";
preg_match_all($regExt, $str, $out, PREG_SET_ORDER);
print_r($out);测试通过

解决方案 »

  1. (?<=<(?:XXXXX)[^>]*(?<start>(?:xxxxx)(?:\s*=\s*(?<end>["']?))))(?:[^\s"'>]*)
    这个是获取指定标签的指定属性的表达式其中
    XXXXX就是指定的标签 如果有多个(?:XXXXX|XXXXX|XXXXX)
    xxxxx就是指定的属性 如果有多个(?:xxxxx|xxxxx|xxxxx)
    group("start") 是属性的前缀 (xxxxx=") 其中xxxxx是你的属性 后面可以忽略"="号前后的空格 并且能够区分包围属性值的 双引号 单引号 或 空
    group("end") 是包围属性值的 双引号 单引号 或 空以上无法分析你的图片类型如果需要分辨图片类型 则在上面表达式后面加上下面的表达式
    (?=(?:jpg|gif|jpeg|bmp|png))
      

  2. 不好意思上面最后分析图片类型的表达式有点错误说多了怕你不懂给你个实际点的表达式
    (?<=<(?:img)[^>]*(?<start>(?:src)(?:\s*=\s*(?<end>["']?))))(?:[^\s"'>]*)\.(?:jpg|gif|jpeg|bmp|png)测试:
    <IMG src= '/eicms/wwwroot/resources/12/2006101207263154.jpg' border=0><IMG src ="/eicms/wwwroot/resources/1/20061012023459298.jpg" border=0>match到2个分别是
    /eicms/wwwroot/resources/12/2006101207263154.jpg
    组"start" 为 (src= ')
    组"end" 为 (')
    /eicms/wwwroot/resources/1/20061012023459298.jpg
    组"start" 为 (src =")
    组"end" 为 (")如果你不需要里面的2个组 可以用这个表达式
    (?<=<(?:img)[^>]*(?:(?:src)(?:\s*=\s*(?:["']?))))(?:[^\s"'>]*)\.(?:jpg|gif|jpeg|bmp|png)
      

  3. 呵呵~~一般都是这样的说,gzdiablo()兄不要生气的说~
      

类似问题 »