php正则替换html中的子标签。例如只替换<table>标签中的<img>标签,而不影响<table>外的<img>

例如有一段html如下<imgtitle="aaa"src="bbb"/><table>...<td>aaa<imgsrc="ccc"/></td>...</table>... 例如有一段html如下
<img title="aaa" src="bbb"/><table>...<td>aaa<img src="ccc"/></td>...</table>
我现在只是想把所有<td>中的img标签给去掉,但不影响外面的那些img标签。请问如何做到。
展开
 我来答
cmoooo
2013-06-18 · TA获得超过3587个赞
知道小有建树答主
回答量:741
采纳率:0%
帮助的人:668万
展开全部

下面是实现的代码,你可以看看,基本符合你的要求,前提是一个单元格中只有一张图像;

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
</head>

<body>
<?php
$str = '
<img src="aaa" />
<table border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><img src="bbb" /></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>
<img src="ccc" />
</td>
    <td><img src="eee" alt="noAlt"></td>
  </tr>
  <tr>
    <td><img src="ddd" /></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td><img src="eee" /></td>
  </tr>
</table>
';

$reg = "#(?<=<td)(.*?)(?<i><img[^>]*>)#is";
$re = preg_replace($reg, '$1', $str);
echo $re;

?>
</body>
</html>

 

__


刚刚忘了你要的是替换了,已经更改。

百度网友690c81e14
2013-06-18 · TA获得超过635个赞
知道小有建树答主
回答量:680
采纳率:0%
帮助的人:665万
展开全部
$preg	= '|(<table.*?(?<!\</table>))<img[^>]*>|';
preg_replace($preg, '$1', $str);

这个正则表达式要用到'向后查看'

不明白请追问

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式