替换结构 这个正则如何写啊
替换结构 这个正则怎么写啊?
页面中的:
<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是页面内容。好像要用反向引用,不懂啊
求指导。
------解决方案--------------------
页面中的:
<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);
------解决方案--------------------
------解决方案--------------------
([^ ]+)"[^>]+>([^<]+)
([^ ]+) 这部分是匹配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*(['\"])?.*?([^/]+)\#(.*?)\\1[^>]*>(.*?)</div>#i", '<div id="div_PDf"><a href="\\2@\\3">\\4</a></div>', $s); /* 页面中的: <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> */