<?php $txt =<<< TXT
"<img src="../Documents/medies/Link_icon1.gif" alt="Image:link_icon1.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon1.gif" /></a><a href="/index.php/%E7%A8%80%E7%A1%9D%E9%85%B8%E6%B0%A7%E5%8C%96%E6%B3%95" title="稀硝酸氧化法">稀硝酸氧化法</a>
<img src="../Documents/medies/Link_icon.gif" alt="Image:link_icon.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon.gif" /></a><a href="/index.php/%E6%B0%A8-%E7%A2%B1%E6%BA%B6%E6%B6%B2%E4%B8%A4%E7%BA%A7%E5%90%B8%E6%94%B6%E6%B3%95" title="氨-碱溶液两级吸收法">氨-碱溶液两级吸收法</a> 
TXT;if(preg_match_all('/src="(.*?)"../Documents/medies/is',$txt,$m)){
$imgne = $m[0];
}
print_r ($imgne);
?>这样正则好像不对,我就想了另一个折中的办法:
<?php $txt =<<< TXT
"<img src="../Documents/medies/Link_icon1.gif" alt="Image:link_icon1.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon1.gif" /></a><a href="/index.php/%E7%A8%80%E7%A1%9D%E9%85%B8%E6%B0%A7%E5%8C%96%E6%B3%95" title="稀硝酸氧化法">稀硝酸氧化法</a>
<img src="../Documents/medies/Link_icon.gif" alt="Image:link_icon.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon.gif" /></a><a href="/index.php/%E6%B0%A8-%E7%A2%B1%E6%BA%B6%E6%B6%B2%E4%B8%A4%E7%BA%A7%E5%90%B8%E6%94%B6%E6%B3%95" title="氨-碱溶液两级吸收法">氨-碱溶液两级吸收法</a> 
TXT;
if(preg_match_all('/src="(.*?)"/is',$txt,$m)){
$imgne = $m[0];
$imgne = preg_replace('../Documents/medies/','',$imgne);
}
print_r ($imgne);
?>这样的正则能得到../Documents/medies/Link_icon1.gif和../Documents/medies/Link_icon.gif
于是我想再替换掉。可是报错:
Warning: preg_replace() [function.preg-replace]: Unknown modifier '/' in 
需要得到的是Link_icon1.gif和Link_icon.gif。前面的../Documents/medies/路径是固定的。
该怎么做呢?

解决方案 »

  1.   

    preg_match_all('/src=".+?\/([^\/]+?)"/is',$txt,$m);
    print_r($m[1]);
      

  2.   

    $txt =<<< TXT
    <img src="../Documents/medies/Link_icon1.gif" alt="Image:link_icon1.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon1.gif" /></a><a href="/index.php/%E7%A8%80%E7%A1%9D%E9%85%B8%E6%B0%A7%E5%8C%96%E6%B3%95" title="稀硝酸氧化法">稀硝酸氧化法</a>
    <img src="../Documents/medies/Link_icon.gif" alt="Image:link_icon.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon.gif" /></a><a href="/index.php/%E6%B0%A8-%E7%A2%B1%E6%BA%B6%E6%B6%B2%E4%B8%A4%E7%BA%A7%E5%90%B8%E6%94%B6%E6%B3%95" title="氨-碱溶液两级吸收法">氨-碱溶液两级吸收法</a> 
    TXT;
    echo preg_replace('#(src=").+([^/]+")#U', '$1$2', $txt);<img src="Link_icon1.gif" alt="Image:link_icon1.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon1.gif" /></a><a href="/index.php/%E7%A8%80%E7%A1%9D%E9%85%B8%E6%B0%A7%E5%8C%96%E6%B3%95" title="稀硝酸氧化法">稀硝酸氧化法</a>
    <img src="Link_icon.gif" alt="Image:link_icon.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon.gif" /></a><a href="/index.php/%E6%B0%A8-%E7%A2%B1%E6%BA%B6%E6%B6%B2%E4%B8%A4%E7%BA%A7%E5%90%B8%E6%94%B6%E6%B3%95" title="氨-碱溶液两级吸收法">氨-碱溶液两级吸收法</a> 
      

  3.   

    打印结果:Array ( [0] => Link_icon1.gif [1] => Link_icon.gif [2] <?php $DBserver         = "localhost";
    $DBname           = "lookdb";
    $DBuser           = "root";
    $DBpassword       = "";$con = mysql_connect("localhost","root","");$txt =<<< TXT
    "<img src="../Documents/medies/Link_icon1.gif" alt="Image:link_icon1.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon1.gif" /></a><a href="/index.php/%E7%A8%80%E7%A1%9D%E9%85%B8%E6%B0%A7%E5%8C%96%E6%B3%95" title="稀硝酸氧化法">稀硝酸氧化法</a>
    <img src="../Documents/medies/Link_icon.gif" alt="Image:link_icon.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon.gif" /></a><a href="/index.php/%E6%B0%A8-%E7%A2%B1%E6%BA%B6%E6%B6%B2%E4%B8%A4%E7%BA%A7%E5%90%B8%E6%94%B6%E6%B3%95" title="氨-碱溶液两级吸收法">氨-碱溶液两级吸收法</a> 
    TXT;if(preg_replace('#(src=").+([^/]+")#U', '$1$2', $txt));    $imgne = $m[1];   
    }
    print_r ($imgne);
    mysql_select_db("lookdb",$con);
    mysql_query("set names 'gbk'");
    $sql = "update imgmulu set page_id = 101370  where img_name = ('{$imgne}')";
    //$sql = "update imgmulu set page_id = 101370 where img_name= 'ESIL_gaowenjiayarechuli1.gif'";mysql_query($sql);但是这样存不进数据库,下面那句sql语句就可以
      

  4.   

    上面代码发错了,代码是这样:<?php $DBserver         = "localhost";
    $DBname           = "lookdb";
    $DBuser           = "root";
    $DBpassword       = "";$con = mysql_connect("localhost","root","");$txt =<<< TXT
    "<img src="../Documents/medies/Link_icon1.gif" alt="Image:link_icon1.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon1.gif" /></a><a href="/index.php/%E7%A8%80%E7%A1%9D%E9%85%B8%E6%B0%A7%E5%8C%96%E6%B3%95" title="稀硝酸氧化法">稀硝酸氧化法</a>
    <img src="../Documents/medies/Link_icon.gif" alt="Image:link_icon.gif" width="16" height="16" longdesc="/index.php/Image:Link_icon.gif" /></a><a href="/index.php/%E6%B0%A8-%E7%A2%B1%E6%BA%B6%E6%B6%B2%E4%B8%A4%E7%BA%A7%E5%90%B8%E6%94%B6%E6%B3%95" title="氨-碱溶液两级吸收法">氨-碱溶液两级吸收法</a> 
    TXT;if(preg_match_all('/src=".+?\/([^\/]+?)"/is',$txt,$m)){ 
        $imgne = $m[1];   
    }
    print_r ($imgne);
    mysql_select_db("lookdb",$con);
    mysql_query("set names 'gbk'");
    $sql = "update imgmulu set page_id = 101370  where img_name = ('{$imgne}')";
    //$sql = "update imgmulu set page_id = 101370 where img_name= 'ESIL_gaowenjiayarechuli1.gif'";mysql_query($sql);
      

  5.   

    $imgne 是一个数组啊。能用=号比较吗  
    你是要干什么。在那两个文件名里面就更新吗?
      

  6.   

    流程是这样的,首先读出page表中的页面内容(就是$txt里的,因为太多就截了一段)和页面ID(pageid),然后截取页面中的所有图片名,然后imgmulu表中是有这些图片名的
    现在在imgmulu中增加了page_id这个字段,所以最后是把截出的来图片名根据imgmulu中对应的图片名,赋值pageid到imgmulu表中新增的page_id
      

  7.   

    pageid = 101370 是先拿来测试一个页面。
    page的结构是pageid page_text(页面内容)
    imgmulu的结构是img_id img_name page_id
      

  8.   

    打印$imgne的结果现在是这样:Array ( [0] => Link_icon1.gif [1] => Link_icon.gif 
    是不是要打印出这样的结果才能存入数据库:Link_icon1.gifLink_icon.gif
      

  9.   

    库中 img_name 是怎么存的。也是多个文件名连在一起存的?
      

  10.   

    img_name是这样存的
    img_id   img_name
    1       Link_icon1.gif
    2       Link_icon.gif
      

  11.   

    $s=join("','",$imgne);
    $sql = "update imgmulu set page_id = 101370  where img_name in ('". $s."')";