正则表达式取html里的内容怎么取

小柳 2011-12-02 01:07:01
比方说
<div id="aaa">12345<div id="bbb">abcde</div></div>
我想用正则取到第一个div里的代码,即:12345<div id="bbb">abcde</div>
用正则该怎么取呢,本人刚开始学习正则,求解,最好带有简单的解释
...全文
73 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
小柳 2011-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kyzy_yy_pm 的回复:]
PHP code
$s = '<div id="aaa">12345<div id="bbb">abcde</div></div>';
$r = '#<div[^>]*>(.*)</div>#';
preg_match($r, $s, $a);
echo $a[1];
[/Quote]
有个新问题,如何取到第一个开始的div和第一个结束的/div之间的值,比方说我想得到
12345<div id="bbb">abcde
虽然已经结贴了,高手方便的话再点一下
beimuaihui 2011-12-02
  • 打赏
  • 举报
回复
三楼正解,通用一点的。<(\w*)\b[^>]*>(.*)<\/\1>
foolbirdflyfirst 2011-12-02
  • 打赏
  • 举报
回复
建议你了解下正则的递归模式。
$html = <<<html                
<div id="aaa">12345<div id="bbb">abcde</div></div></div> <div id="ccc">match me?</div>
html;

$pa = "#<div[^>]*>((?:([^<>])|(?R))*)</div>#is";

preg_match_all($pa,$html,$match);

echo "<pre/>";
print_r($match);

结果
==================================
Array
(
[0] => Array
(
[0] => <div id="aaa">12345<div id="bbb">abcde</div></div>
[1] => <div id="ccc">match me?</div>
)

[1] => Array
(
[0] => 12345<div id="bbb">abcde</div>
[1] => match me?
)

[2] => Array
(
[0] => 5
[1] => ?
)

)




小柳 2011-12-02
  • 打赏
  • 举报
回复
谢谢 kyzy_yy_pm
黑色渐变 2011-12-02
  • 打赏
  • 举报
回复
正则匹配嵌套的成对标签?还木有写过
kyzy_yy_pm 2011-12-02
  • 打赏
  • 举报
回复
$s = '<div id="aaa">12345<div id="bbb">abcde</div></div>';
$r = '#<div[^>]*>(.*)</div>#';
preg_match($r, $s, $a);
echo $a[1];
ohmygirl 2011-12-02
  • 打赏
  • 举报
回复
@ci1699
小柳 2011-12-02
  • 打赏
  • 举报
回复
求解

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧