日期:2014-05-17  浏览次数:20480 次

替换结构 这个正则怎么写啊?
页面中的:
<div id="divPdf1" title="../2003Z/hb/z363.pdf#page=3" class="downpdf" style="cursor:hand;">ISO前言</div>
<div id="divPdf2" title="../2003Z/hc/z364.pdf#page=3" class="downpdf" style="cursor:hand;">引言</div>
改为
<div id="div_PDf" ><a href="z363.pdf@page=3"> ISO前言</a></div>
<div id="div_PDf" ><a href="z364.pdf@page=3"> 引言</a></div>

$ptext是页面内容。好像要用反向引用,不懂啊
PHP code


<?php 

$DBserver         = "localhost";
$DBname           = "new";
$DBuser           = "root";
$DBpassword       = "";

$con = mysql_connect("localhost","root","");

mysql_query("set names 'gbk'");

mysql_select_db("new");

$query = mysql_query("select page_id,page_text from pagecontents ") or die(mysql_error() );

while($rows = mysql_fetch_array($query))
{
    $pid = $rows['page_id'];
    $ptext = $rows['page_text'];

    $ptext = preg_replace('/..\/2003Z\/[\w]+/s','',$ptext);
    $ptext = mysql_real_escape_string($ptext);
         $ptext = preg_replace('','',$ptext); 

    mysql_query("set names 'gbk'");
    $sql = "update pagecontents set page_text = ('{$ptext}') where page_id = ('{$pid}')";
    mysql_query($sql) or die(mysql_error());
}

?>





求指导。

------解决方案--------------------
PHP code
$s = <<< TXT
页面中的:
<div id="divPdf1" title="../2003Z/hb/z363.pdf#page=3" class="downpdf" style="cursor:hand;">ISO前言</div>
<div id="divPdf2" title="../2003Z/hc/z364.pdf#page=3" class="downpdf" style="cursor:hand;">引言</div>
TXT;

echo preg_replace('# title=".+?/([^ ]+)"[^>]+>([^<]+)<#iU', '><a href="$1">$2</a><', $s);

------解决方案--------------------
探讨

PHP code
$s = <<< TXT
页面中的:
<div id="divPdf1" title="../2003Z/hb/z363.pdf#page=3" class="downpdf" style="cursor:hand;">ISO前言</div>
<div id="divPdf2" title="../2003Z/hc/z364.pdf#page=3" class="downpd……

------解决方案--------------------
([^ ]+)"[^>]+>([^<]+)

([^ ]+) 这部分是匹配url的,一般url不存在空的
" 就是url的结尾了
[^>]+> 就是匹配不是 > 的所有东西,即那标签可能存在其它的属性了。然后才到 > 标题头的末尾

([^<]+) 这个就是标签的内容,不存在 <(这个是标签的后部分) 


大概是这样子,不知我说得明白否。。
------解决方案--------------------
不太懂这个,。。。。照葫芦画瓢写个

PHP code


$str=<<<HT
<div id="divPdf1" title="../2003Z/hb/z363.pdf#page=3" class="downpdf" style="cursor:hand;">ISO前言</div>
<div id="divPdf2" title="../2003Z/hc/z364.pdf#page=3" class="downpdf" style="cursor:hand;">引言</div>
HT;
$regExp='<div id="(\w+)" title="\.\.\/\w+\/\w+\/(\w+\.pdf)(#)page=(\d+)" class="downpdf" style="cursor:hand;">(\S+)<\/div>';
$replace='<div id="$1"><a href="$2@page=$4">$5</div>';
echo preg_replace("/$regExp/",$replace,$str);

------解决方案--------------------
PHP code

echo preg_replace("#<div[^>]*title\s*=\s*(['\"])?.*?([^/]+)\#(.*?)