我想在一个网页的代码中提取一个图片的路径,这样写怎么匹配不出来?
$s = '/(src=")(.*)("><\/STRONG><\/DIV>)/i';
我想从下面的代码中提取
【三星S3930C】三星(SAMSUNG)S3930C 3G 手机(深俊蓝)TD-SCDMA-GSM 移动定制 【行情 报价 价格 评测】.files/P417434BC7DA1E6890EB88C135A789489,3.png网页部分代码是:
 href="javascript:void(0)" target=_blank>kaixing</A> <A id=site-sina 
  title=分享到新浪微博 href="javascript:void(0)">sina</A> <A id=site-email title=邮件 
  href="http://club.360buy.com/jdFriend/tjyl.aspx?product=191183" 
  target=_blank>email</A> <A id=site-qqmsn title=通过QQ/MSN发送链接给好友 
  href="javascript:void(0)">qq/msn</A> </LI></UL></DIV><!--preview end-->
<SCRIPT type=text/javascript>
var jdVideo=function(){
            this.url_360=null;
            this.url_video=null;
            };
</SCRIPT><UL id=summary>
  <LI>市&nbsp;场&nbsp;价:<DEL>¥1199.00</DEL><SPAN class=pid>商品编号:191163</SPAN> 
  <LI>
  <DIV class=fl>&nbsp;价:<STRONG class=price><IMG 
  onerror="this.src='http://www.360buy.com/images/no2.gif'" 
  src="【三星S3930C】三星(SAMSUNG)S3930C 3G 手机(深俊蓝)TD-SCDMA-GSM 移动定制 【行情 报价 价格 评测】.files/P417434BC7DA1E6890EB88C135A789489,3.png"></STRONG></DIV>
  <DIV class=hide>
  <DL id=otherprice>
    <DT>其它报价(1)
    <DD>
    <DIV><A 
    href="http://www.sdf.com/product/194753.html"><EM>¥899.00</EM>京东商城</A></DIV></DD></DL></DIV><SPAN 
  id=promotion1></SPAN><!--金牌以上会员价--><A 
  href="http://jd2008.360buy.com/notify.aspx?id=191183&amp;type=1&amp;key=417434BC7DA1E6890EB88C135A789489">(降价通知)</A>   <DIV class=clr></DIV>
  <SCRIPT type=text/javascript>$("#otherprice").hoverForIE6();</SCRIPT>  <LI class=hide id=storeinfocontainer>

解决方案 »

  1.   

    这代码是测过的,没有问题,有问题只能是你html给的不全,没给的部分会有干扰,如果有干扰,请打出匹配出的多余部分,再修正$str=<<<end
    href="javascript:void(0)" target=_blank>kaixing</A> <A id=site-sina   
      title=分享到新浪微博 href="javascript:void(0)">sina</A> <A id=site-email title=邮件   
      href="http://club.360buy.com/jdFriend/tjyl.aspx?product=191183"   
      target=_blank>email</A> <A id=site-qqmsn title=通过QQ/MSN发送链接给好友   
      href="javascript:void(0)">qq/msn</A> </LI></UL></DIV><!--preview end-->
    <SCRIPT type=text/javascript>  
    var jdVideo=function(){
    this.url_360=null;
    this.url_video=null;
      };
    </SCRIPT><UL id=summary>
      <LI>市&nbsp;场&nbsp;价:<DEL>¥1199.00</DEL><SPAN class=pid>商品编号:191163</SPAN>   
      <LI>
      <DIV class=fl>&nbsp;价:<STRONG class=price><IMG   
      onerror="this.src='http://www.360buy.com/images/no2.gif'"   
      src="【三星S3930C】三星(SAMSUNG)S3930C 3G 手机(深俊蓝)TD-SCDMA-GSM 移动定制 【行情 报价 价格 评测】.files/P417434BC7DA1E6890EB88C135A789489,3.png"></STRONG></DIV>
      <DIV class=hide>
      <DL id=otherprice>
      <DT>其它报价(1)
      <DD>
      <DIV><A   
      href="http://www.sdf.com/product/194753.html"><EM>¥899.00</EM>京东商城</A></DIV></DD></DL></DIV><SPAN   
      id=promotion1></SPAN><!--金牌以上会员价--><A   
      href="http://jd2008.360buy.com/notify.aspx?id=191183&amp;type=1&amp;key=417434BC7DA1E6890EB88C135A789489">(降价通知)</A>     <DIV class=clr></DIV>
      <SCRIPT type=text/javascript>$("#otherprice").hoverForIE6();</SCRIPT>  <LI class=hide id=storeinfocontainer>
    end;
    preg_match("#src=\"([^\"]+)#s",$str,$match);
    echo $match[1];
      

  2.   

    你的匹配出:Array
    (
        [0] => src="http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
        [1] => http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
    )
    Array
    (
        [0] => src="http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
        [1] => http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
    )
    Array
    (
        [0] => src="http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
        [1] => http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
    )
    Array
    (
    )
    Array
    (
        [0] => src="http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
        [1] => http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
    )
    Array
    (
        [0] => src="http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
        [1] => http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
    )
    Array
    (
        [0] => src="http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
        [1] => http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
    )
    Array
    (
        [0] => src="http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
        [1] => http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
    )
    Array
    (
        [0] => src="http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
        [1] => http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
    )
    Array
    (
        [0] => src="http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
        [1] => http://misc.360buyimg.com/201006/js/jquery-1.2.6.pack.js
    )
    <br />
    <b>Fatal error</b>:  Maximum execution time of 40 seconds exceeded in <b>D:\wwwroot\pcnp\include\competitor\360buy\site-test.php</b> on line <b>259</b><br />
      

  3.   

    你自己看你给的html里有匹配出的东西么?给个不全的html要匹配,哪还能匹配精确了?
    给测试代码给全了行吗?
      

  4.   

    我把网址贴出来吧:http://www.360buy.com/product/191183.html就是要匹配出上面的网址中的 “京东价”的价格的图片url地址
      

  5.   

    感觉你给的部分代码跟源码不太一样,下面这个能匹配网页上的京东价图片
    preg_match('/<strong class="price"><img onerror = ".+?".+?"(.+?)"/si',$str,$match);
    print_R($match);
      

  6.   

    测试出来的结果是:
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/PD9C5169E744C5DD97428F4ADFD2655BB,3.png"
        [1] => http://price.360buy.com/PD9C5169E744C5DD97428F4ADFD2655BB,3.png
    )
    Array
    (
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P09B0F72347C9332D7DAFFDFD9A73D704,3.png"
        [1] => http://price.360buy.com/P09B0F72347C9332D7DAFFDFD9A73D704,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P09B0F72347C9332DEE2500D9AF96BF2C,3.png"
        [1] => http://price.360buy.com/P09B0F72347C9332DEE2500D9AF96BF2C,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P09B0F72347C9332D739BA752C1C74A66,3.png"
        [1] => http://price.360buy.com/P09B0F72347C9332D739BA752C1C74A66,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P09B0F72347C9332D8CEA89BB40896464,3.png"
        [1] => http://price.360buy.com/P09B0F72347C9332D8CEA89BB40896464,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/PE43FC0FE2FECDAD61B40644122F42D8E,3.png"
        [1] => http://price.360buy.com/PE43FC0FE2FECDAD61B40644122F42D8E,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/PE43FC0FE2FECDAD6A6DA26AA7F09D855,3.png"
        [1] => http://price.360buy.com/PE43FC0FE2FECDAD6A6DA26AA7F09D855,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/PE43FC0FE2FECDAD6DE059FFFFA14D3DC,3.png"
        [1] => http://price.360buy.com/PE43FC0FE2FECDAD6DE059FFFFA14D3DC,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P39418FF15978C4DED3DF115586469D79,3.png"
        [1] => http://price.360buy.com/P39418FF15978C4DED3DF115586469D79,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P39418FF15978C4DECD5F4F8D90755C44,3.png"
        [1] => http://price.360buy.com/P39418FF15978C4DECD5F4F8D90755C44,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/PE43FC0FE2FECDAD6517927F2C2F3E231,3.png"
        [1] => http://price.360buy.com/PE43FC0FE2FECDAD6517927F2C2F3E231,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P21BDD71DCA4294452513DA778F1E0212,3.png"
        [1] => http://price.360buy.com/P21BDD71DCA4294452513DA778F1E0212,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/PE43FC0FE2FECDAD65CFDB1930004E927,3.png"
        [1] => http://price.360buy.com/PE43FC0FE2FECDAD65CFDB1930004E927,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/PEC5DD15D81C4634A077E4F204B31798E,3.png"
        [1] => http://price.360buy.com/PEC5DD15D81C4634A077E4F204B31798E,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P21BDD71DCA42944503B260EA2918F90F,3.png"
        [1] => http://price.360buy.com/P21BDD71DCA42944503B260EA2918F90F,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P64F1C4AA20A2A86E52E09161CDFC9C48,3.png"
        [1] => http://price.360buy.com/P64F1C4AA20A2A86E52E09161CDFC9C48,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P64F1C4AA20A2A86EDA95278BD40FAAD4,3.png"
        [1] => http://price.360buy.com/P64F1C4AA20A2A86EDA95278BD40FAAD4,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P09E3D77DB73D2C172B60A03B94D0D362,3.png"
        [1] => http://price.360buy.com/P09E3D77DB73D2C172B60A03B94D0D362,3.png
    )
    Array
    (
        [0] => <strong class="price"><img onerror = "this.src='http://www.360buy.com/images/no2.gif'"  src ="http://price.360buy.com/P09E3D77DB73D2C178F3B00580CFAA519,3.png"
        [1] => http://price.360buy.com/P09E3D77DB73D2C178F3B00580CFAA519,3.png
    )
      

  7.   

    我没说明白可能是,我要的是“京东价”与“降价通知”之间的价格图片的url
      

  8.   

    奇怪了,我怎么就一个结果啊
    $str=file_get_contents('http://www.360buy.com/product/191183.html');
    preg_match_all('/<strong class="price"><img onerror = ".+?".+?"(.+?)"/si',$str,$match);
    print_R($match);
      

  9.   

    我的是这样:
    $fucknum=5;

    $outime=$fucknum*2+30;
    set_time_limit($outime);//设置脚本执行时间
    $nextnum=20;//连续查找10次不存在则终止
    //$sn=$arr['sn'];

    $sn=191183;

    while($nextnum>0){
    $arr1 = $arr2 = array();
    $sn=$sn+1;
    $url=$GLOBALS['competitor'][0]['product'].$sn.'.html';

    // $url="http://www.360buy.com/allSort.aspx";

    $str = file_get_contents($url);// $preg ='/(href="http:\/\/www\.360buy\.com\/brands\/)(\d+)-(\d+)(\.html")/';
    // $preg2 ='/(href="http:\/\/www\.360buy\.com\/product\/)(\d+)(\.html">)(.*)(<\/A>)/i';
    $s='/<strong class="price"><img onerror = ".+?".+?"(.+?)"/si'; //价格图片地址

    // $s = '/<DIV class=mt><STRONG><A 
    //href="http:\/\/www\.360buy\.com\/allSort\.aspx">全部商品分类<\/A><\/STRONG>(.*)<DT><B><\/B><STRONG>购物指南<\/STRONG>/i'; $str = iconv("gbk","UTF-8",$str);

    // preg_match($preg,$str,$arr1);       
    // preg_match($preg2,$str,$arr2);
    preg_match($s,$str,$arr3);


    // print_r($arr1);
    //         print_r($arr2);
    print_r($arr3);
      

  10.   

    你确定用的是我的代码?你把10楼的代码复制了之后运行下就知道效果了,绝对只匹配出一个图片,而且你上面说的匹配出好多个图片的那种,都是一个位置的图片,明显说明你匹配的不止一个页面,也就是说你在循环内部随便就print_R了一下,把许多个页面的内容都抓了。你在print_R下面加个exit;,这样才能确保只抓一个页面,抓完就中止,然后再看行不行,另外,你再仔细看看你抓到的图片,那个暂无报价就是那个位置的,有些商品就是暂无报价的!
      

  11.   

    我确定用的是你的代码,exit抓完就终止后就什么都抓不到了
      

  12.   

    这是测试用,exit;是用来中断循环,测试一次的效果,你应该是在循环抓站的,页面都是一样的格式,抓到一个就能抓到所有的
      

  13.   

    抓到的是:http://price.360buy.com/PD9C5169E744C5DD97428F4ADFD2655BB,3.png 
    从浏览器里看图片的属性看到的url和匹配出来的不一样呢?