我使用 simple_html_dom.php, 只会找出HTTP开头的图片,如何再加一个JPG结尾的判断?foreach ($html->find('img[src^="http"]') as $element)  或者
哪位给写个 preg_match_all 所有 HTTP开头的JPG图片?谢谢。

解决方案 »

  1.   

    不是太明白你想表达的意思,这是我学正则的时候写的,获取一个网页图片的,<?php
    /*
     * @param string $url 采集url
     * @param int $isinsite 是否为站内的 默认1为站内0为站外站内
     * @return string 
     */
    function getallimg($url,$isinsite=1)
    {
        $urlstr=parse_url($url);
        $url=$urlstr[scheme]?$url:"http://".$urlstr[path];//判断用户输入的网址有没有包含http://再进行补全
        $urlstr=parse_url($url);
        $site="http://".$urlstr[host];//取本站地址
        $subject =file_get_contents($url);
        $pattern = '/.*<img .*src=[\'|\"](.*[.jpg|.gif|.png])[\'|\"].*\/??>.*/U';//其中的//为分隔符
        preg_match_all($pattern,$subject,$result);//查找所有的匹配项
        if($isinsite==0)
        {
           foreach ($result as $key => $value) //二维数组$result[n][m];
                   {
                 if($key==1)
                   {   
                foreach ( $value as $key => $value )//取$result[m]
                        {
                       $isownsite=parse_url($value);
                       $url=$isownsite[host]?$value:$site.$isownsite[path];//获取该网页的所有图片还其他网址的
                       $imgcontent.="<img  src=".$url.">|";
                        }
               }
                   }
        }
        if($isinsite==1)
        {
           foreach ($result as $key => $value) //二维数组$result[n][m];
                   {
                 if($key==1)
                   {   
                foreach ( $value as $key => $value )//取$result[m]
                        {
                       $isownsite=parse_url($value);
                       $url=$isownsite[host]?NULL:$site.$isownsite[path];//只获取该site的不含外部网址
                       if($url!=NULL)
                       $imgcontent.="<img  src=".$url.">|";
                        }
               }
                   }
        }
        return $imgcontent;
    }
    ?><form action="getimg.php" method="post">
    <input type="radio" name="onlysite" value="1" />找全站内图片<br/>
    <input type="radio" name="onlysite" value="0" />找全站内站外图片<br/>
    <input type="text"name="site" size="70"/>多个网址请用&#64;隔开如:[email protected]<br/>
    <input type="submit"  name="name" value="找图" />
    </form>
    <?php
    $url=$_POST[site];
    $url=explode("@",$url);
    $isinsite=$_POST[onlysite];
    for ( $i = 0;$i <2; $i++ ) {
        if($url[$i]!=NULL)
    echo getallimg($url[$i],$isinsite);
    }
    ?>
      

  2.   

    .*<img .*src=[\'|\"](.*[.jpg|.gif|.png])[\'|\"].*\/??>.*/U'
    这样的话,连"../images/1.jpg"也抓出来了。
    而我需要的是 http:// 开头的所有图片 "http://domain.com/images/1.jpg"
      

  3.   

    现在过渡依赖于simple_html_dom,怎么修改正则呢?
      

  4.   

    再加一句正则就可以了foreach ($html->find('img[src^="http"]') as $element) {
      if(preg_match('/\.jpg/i',$element->src)){
        echo $element->src . "<br />\n";
      }
    }
      

  5.   

    你就正则匹配http开头就好了快来给我说说你我离婚后分组家庭的情况吧