<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"><param name="movie" value="/images/1/17/ESIL_xiaoshengqi2.swf"><param name="bgcolor" value="#FFFFFF"><param name="scale" value="exactfit">
<embed src="/images/1/17/ESIL_xiaoshengqi2.swf" width="550" height="400" bgcolor="#FFFFFF" scale="exactfit" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed> </object>改为:<img src="../Documents/medies/ESIL_xiaoshengqi1.gif" alt="Image:ESIL_xiaoshengqi1.gif" width="550" height=" 400" longdesc="/index.php/Image:ESIL_xiaoshengqi2.gif" />width和height的值是变动的,如果width < 805, 那么width和height的值都不需要改变。
如果width > 805 
那么height = height * 805 /width ; 
    width= 805这个正则加判断怎么写啊?最近用到好多正则,怎么样才能把正则学好呢?

解决方案 »

  1.   

    请说明你的规则../Documents/medies/ESIL_xiaoshengqi1.gif
    这个乍来的
    Image:ESIL_xiaoshengqi1.gif 这个呢?width="550" height=" 400"  这个呢???上面有两个,需要哪个?
      

  2.   

    <object>直接去掉就可以了
    然后就是改
    <embed src="/images/1/17/ESIL_xiaoshengqi2.swf" width="550" height="400" bgcolor="#FFFFFF" scale="exactfit" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed>为<img src="../Documents/medies/ESIL_xiaoshengqi2.gif" alt="Image:ESIL_xiaoshengqi2.gif" width="550" height=" 400" longdesc="/index.php/Image:ESIL_xiaoshengqi2.gif" />../Documents/medies/ESIL_xiaoshengqi1.gif
    这个是相对路径
      

  3.   

    参考一下:
    $s=<<<html
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"><param name="movie" value="/images/1/17/ESIL_xiaoshengqi2.swf"><param name="bgcolor" value="#FFFFFF"><param name="scale" value="exactfit">
    <embed src="/images/1/17/ESIL_xiaoshengqi2.swf" width="1000" height="400" bgcolor="#FFFFFF" scale="exactfit" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed> </object>
    html;$r= preg_replace('#.+<embed\s*src="(.*?)/([^"]+)"\s*width="(\d+)"\s*height="(\d+)"[^>]*>.+#s','<img src="../Documents/medies/$2" alt="Image:$2" width="$3" height="$4" longdesc="/index.php/Image:$2" />',$s);preg_match('#width="(\d+)"\s*height="(\d+)"#i',$r,$m);
    if($m[1]>805){ 
             $h=($m[2]*805)/$m[1] ; 
     $r=preg_replace('/(width=)"(\d+)"(\s*height=)"(\d+)"/s','$1"$2"$3"'.$h.'"',$r);
    }
    echo $r;
      

  4.   

    while($rows = mysql_fetch_array($query))
    {
    $pid = $rows['page_id'];
    $ptext = $rows['page_text'];
    $ptext = preg_replace('#<object.+<embed\s*src=(.*?)"../Documents/medies/([^"]+).swf"\s*width="(\d+)"\s*height="(\d+)"[^>]*>.+</object>#i','<img src="../Documents/medies/$2.gif" alt="Image:$2.gif" width="$3" height="$4" longdesc="/index.php/Image:$2.gif" />',$ptext);

    preg_match('#width="(\d+)"\s*height="(\d+)"#i',$ptext,$m);
    if($m[1]>805){
    $h=($m[2]*805)/$m[1] ;
    $k=805;
    $ptext = preg_replace('/(width=)"(\d+)"(\s*height=)"(\d+)"/i','$1"'.$k.'"$3"'.$h.'"',$ptext);
    }现在是这样写,但是如果有宽度超过805的,那么所有的<img src ...>中的宽度和高度都会被替换,该怎么改呢?
      

  5.   

    那么你要替换的img与其他的img有区别吗? 差异表现在哪? 
      

  6.   

    差异就是width的值和img名,就是上面$2的值不一样
      

  7.   

    $s =<<< TXT
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"><param name="movie" value="/images/1/17/ESIL_xiaoshengqi2.swf"><param name="bgcolor" value="#FFFFFF"><param name="scale" value="exactfit">
    <embed src="/images/1/17/ESIL_xiaoshengqi2.swf" width="1550" height="400" bgcolor="#FFFFFF" scale="exactfit" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></embed> </object>
    TXT;
    $r= preg_replace_callback('#.+<embed\s*src="(.*?)/([^"]+)"\s*width="(\d+)"\s*height="(\d+)"[^>]*>.+#s', 'back', $s);function back($r) {
      if($r[3] > 805) {
        $r[4] = round($r[4]*805/$r[3]);
        $r[3] = 805;
      }
      return <<< TXT
    <img src="../Documents/medies/$r[2]" alt="Image:$r[2]" width="$r[3]" height="$r[4]" longdesc="/index.php/Image:$r[2]" />
    TXT;
    }
    echo $r;