<?
$string = "<img src='c:\a.gif' width=30 height= 20>";if(@ereg("^<img.+src=\'(.+)\' width=(.+) height=(.+)>$",$string,$m)){
echo "[uploadpic|".trim($m[2])."|".trim($m[3])."|".trim($m[1])."]";
}
else{
echo "can't";
}?>

解决方案 »

  1.   

    钢材看漏了~~<?
    $string = "<img src='c:\a.gif' width=30 height= 20>";if(@ereg("^<img.+src=\'(.+)\' width=(.+) height=(.+)>$",$string,$m)){
    $te=explode("\\",trim($m[1]));
    echo "[uploadpic|".trim($m[2])."|".trim($m[3])."|".trim($te[1])."]";
    }
    else{
    echo "can't";
    }?>
      

  2.   

    我的意思是替换.

    $html="
    <img src='c:\a.gif' width=30 height= 20><img src='c:\a.gif' width=30 height= 20>";
    转换为:
    $html= "[uploadpic|30|20|a.gif][uploadpic|30|20|a.gif]"
      

  3.   

    里面可能还含有别的标签如:
    $html="
    <font color=red>ok</font>
    <img src='c:\a.gif' width=30 height= 20><img src='c:\a.gif' width=30 height= 20>";
    转换为:
    $html= "<font color=red>ok</font>uploadpic|30|20|a.gif][uploadpic|30|20|a.gif]"
      

  4.   

    [uploadpic|30|20|a.gif]
    只要文件名
      

  5.   

    考虑到标签内的各个属性次序可能有变,所以简单的替换是不行的
    <?php
    $html="
    <font color=red>ok</font>
    <img src='c:\a.gif' width=30 height= 20><img src='c:\a.gif' width=30 height= 20>";
    if(preg_match_all("/<img [^>]+>/",$html,$regs)) {
      $p = $regs[0]; 
      foreach($p as $key=>$value) {
        $p[$key] = "/".quotemeta($value)."/";
        $value = preg_replace("/ +/"," ",$value); // 除去多余的空格
        $value = preg_replace("/ ?= ?/","=",$value); // 除去多余的空格
        preg_match_all("/\b(\w+)=([^ >]+)/",$value,$r); // 提取赋值表达式
        $ar = array("uploadpic",width=>"",height=>""); // 定义输出缓存    foreach($r[1] as $k=>$v) { // 给缓存赋值
          $ar[$v] = preg_replace("/'/","",$r[2][$k]);
        }
        $out[] = "[".join("|",$ar)."]"; // 生成输出串
      }
      $html = preg_replace($p,$out,$html);
    }
    echo $html;
    ?>
      

  6.   

    echo preg_replace('/<img\s*(?:src=\'.*\x5C(.*)\'\s*|width=(.*)\s*|height=(.*)\s*)*\s*>/Ui',"[uploadpic|\\2|\\3|\\1]",$html);
    //在没有其他属性的情况下使用.(可乱序)
      

  7.   

    //在没有其他属性的情况下使用.(可乱序),只取文件名
    echo preg_replace('/<img\s*(?:src=\'.*\x5C([^\x5C]*)\'\s*|width=(.*)\s*|height=(.*)\s*)*\s*>/Ui',"[uploadpic|\\2|\\3|\\1]",$html);