怪我说得不够清楚:我的意思是,有一个HTML字符串(随机),我现在知道了在这个字符串中的一个表格(TABLE)中的包含的内容,我如何写出Regular Expression,来取得该内容所属最内层的TABLE的HTML代码?例如:
<table ...>
<tr><td>
<table ...><tr><td>程序员大本营</td></tr></table>
</td></tr>
</table>如果我只知道“程序员大本营”,现在想取得包含它的最内层的表格HTML代码,如何写Regular Expression(规则表达式)?谢谢了。
<table ...>
<tr><td>
<table ...><tr><td>程序员大本营</td></tr></table>
</td></tr>
</table>如果我只知道“程序员大本营”,现在想取得包含它的最内层的表格HTML代码,如何写Regular Expression(规则表达式)?谢谢了。
$string = "adsf<table ...>
<tr><td>
<table ...><tr><td>程序员大本营
</td></tr></table>
</td></tr>
</table>adsf";
$string=preg_replace("/.*?(<table.*程序员大本营.*<\/table>).*?/Uis","\\1",$string);
echo "<xmp>".$string;
?>
<tr><td>
<table ...>
<tr><td>程序员大本营</td></tr>
<tr><td><table><tr><td>adsf</td></tr></table></td></tr>
</table>
</td></tr>
</table>返回值如下:
<table ...><tr><td>程序员大本营
</td></tr><tr><td><table><tr><td>adsf</td></tr></table>应该返回值:
<table ...>
<tr><td>程序员大本营</td></tr>
<tr><td><table><tr><td>adsf</td></tr></table></td></tr>
</table>真的麻烦诸位了。
$string="adsf<table ...>
<tr><td>
<table ...>
<tr><td>程序员大本营</td></tr>
<tr><td><table><tr><td>adsf</td></tr></table></td></tr>
</table>
</td></tr>
</table>";
function lastPos($str,$son,$p=0){
while(($m=strpos($str,$son,$p))!==false)
$p=$m+1;
return ($p>=1)?$p-1:false;
}
$pos=strpos($string,"程序员大本营");
$str1=substr($string,0,$pos);
$str2=substr($string,$pos);
while(($p=lastPos($str1,"<table"))<(lastPos($str1,"</table>"))){
$str1=substr($str1,0,$p);
}
while(1){
$pos1=strpos($str2,"<table",$q);
$pos2=strpos($str2,"</table>",$q);
if(!$pos1&&$pos2){break;}
else $q=$pos2+8;
}
echo "<xmp>".substr($string,$p,$pos-$p).substr($str2,0,$pos2+8);
?>
http://www.jazarsoft.com/php/view.php3?id=2
$str="adsf<table ...>\n<tr><td>\n<table>....</table><table ...><tr><td>程序员大本营</td></tr></table>....<table><tr><td>adsf</td></tr></table></td></tr></table></td></tr></table>";
preg_match("/.*(<table.*?程序员大本营.*?<\/table>)/isx",$str,$nn);
echo $nn[1];
?>