php页面中,有个变量的值如下:交通状况:17.209,229,228,旅游2路,夜间306<br><br><img width='500' height='336' src='/pic/201101161024559314401.jpg'/><br><br>
<img width='500' height='336' src='/pic/201101161024559314401.jpg'/>现需:1 把标签以外的内容取出来,应该得到(交通状况:17.209,229,228,旅游2路,夜间306)
      2 把img的src输出来,应该为(/pic/201101161024559314401.jpg|/pic/201101161024559314401.jpg)
这应该如何实现,thanks

解决方案 »

  1.   

    最好就是用正则表达式,可在网上搜一下,如果不用正则表达式还有一个比较笨的办法,就是匹配然后截取,先找到第一个<br>位置,从0截取到这个位置,这样就把“交通状况:17.209,229,228,旅游2路,夜间306”这个内容得到了;同里先找第一个“src”的位置,再找第一个“/>”的位置,从src的位置截取到/>的位置就得到第一个“pic/201101161024559314401.jpg'”这个内容了,同理得到第二个src的内容
      

  2.   

    求daxia帮忙,并提供些代码。。thanks
      

  3.   


    $str = strip_tags($html);
    preg_match("|<img.*src='(.*)'/>|im", $html, $match);
    $src = $match[1];我提供代码,你提供分,怎么样?:)
      

  4.   

    $str="交通状况:17.209,229,228,旅游2路,夜间306<br><br><img width='500' height='336' src='/pic/201101161024559314401.jpg'/><br><br>
    <img width='500' height='336' src='/pic/201101161024559314401.jpg'/>";
    preg_match("/(^[^<>]*[^<>])/i",$str,$arr);echo $arr[1];   //第一个
    //第二个还有点问题,只显示出来一个,今天困了,明天再搞搞
    preg_match("/src='(.*)'\/>/i",$str,$arr2);
    echo $arr2[1];
      

  5.   

    第二个显示$str="交通状况:17.209,229,228,旅游2路,夜间306<br><br><img width='500' height='336' src='/pic/201101161024559314401.jpg'/><br><br>
    <img width='400' height='336' src='/pic/201101161024559314401.jpg'/>";
    preg_match_all("/src='(.*)'\/>/i",$str,$arr2);
    foreach($arr2[1] as $k => $v)
    {
    echo $k . " ".$v."<br />";
    }
      

  6.   

    preg_grep
    (PHP 4, PHP 5)preg_grep — 返回与模式匹配的数组单元 说明
    array preg_grep ( string $pattern , array $input [, int $flags ] )
    preg_grep() 返回一个数组,其中包括了 input 数组中与给定的 pattern 模式相匹配的单元。 flags 可以是以下标记: PREG_GREP_INVERT 
    如果传递入此标记,preg_grep() 会返回输入数组中不匹配给定 pattern 的单元。本标记自 PHP 4.2.0 起可用。 自 PHP 4.0.4 起,preg_grep() 返回的结果使用从输入数组来的键名进行索引。如果不希望这样的结果,用 array_values() 对 preg_grep() 返回的结果重新索引。 
    Example #1 preg_grep() 例子<?php
    // return all array elements
    // containing floating point numbers
    $fl_array = preg_grep ("/^(\d+)?\.\d+$/", $array);
    ?> 还是得用正则,可以试一下楼上哥们的正则表达式
      

  7.   

    用正则表达式$str = "交通状况:17.209,229,228,旅游2路,夜间306<br><br><img width='500' height='336' src='/pic/201101161024559314401.jpg'/><br><br>
    <img width='500' height='336' src='/pic/201101161024559314401.jpg'/>";
    $preg = "/([^<>]*)?(?:(?:[a-z<>]*)<img(?:[^<>]*?)src=\'([^<>]*)\'\/>)/i";
    preg_match_all($preg,$str,$out); 
    echo $out[0][0]; //img标签外的文字
    echo $out[1][0]; //第一个img标签中的src的值
    echo $out[1][1]; //第二个img标签中的src的值
      

  8.   

    echo strip_tags($table);
    //处理图片
    function get_img_src($table)

    preg_match_all('#<img[^>]*>#i',$table,$matches); //从内容中取出img标签
    foreach($matches[0] as $m)

    $table=$m;
    $table = str_replace("'/>","",$table);
    $table = str_replace("src='","",$table);
    $table = str_replace("height='336'","",$table);
    $table = str_replace("width='500'","",$table);
    $table = str_replace("<img ","",$table);
    $tables.=$table.'|';
    }
    $tables_arr=explode("|",$tables);
    $str='\r';
    foreach($tables_arr as $value)
    {
    if($value!='' && $value!=NULL )
    {
    $str.=" \r  \r " ;
    }
    }
    return $str;
    }