万恶的正则表达式. !!!!!!!!!!!!!!!!!

zhulinjia 2011-03-19 04:28:20
$str = '<div class="xx">
<div class="office_pageopt">
<span class="red">←</span>
<a href="1209977,23194165.aspx" id="HeadPrevLink">上一章</a>
<a href="./1209977.aspx">回书目</a>
<a href="1209977,23204630.aspx" id="HeadNextLink">下一章</a>
<span class="red">→</span>
</div>
</div>';


preg_match("/<div[\s]+(class=\"office_pageopt\")>/" ,$str , $s); //我写到这想了2个小时了. 还是没搞定.

print_r($s);


我要匹配 <div class="office_pageopt">中间的内容</div>.
...全文
187 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
淘龙 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhulinjia 的回复:]
PHP code
$str = '<div class="xx">
<div class="office_pageopt">
<span class="red">←</span>
<a href="1209977,23194165.aspx" id="HeadPrevLink">上一章</a>
……
[/Quote]
if(preg_match('/<div\s*class="office_pageopt">(.*?)<\/div>/Uis',$s,$arr)){
print_r($arr);
}
正则加上一个取消贪婪性的U,
kaifadi 2011-03-21
  • 打赏
  • 举报
回复
呵呵,给DIV加个ID,然后这个完全能用JS的document.getElementById("id").innerHTML就能解决的问题,为何非要用正则来过滤处理呢?
zhang6464 2011-03-21
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhulinjia 的回复:]
PHP code
$str = '<div class="xx">
<div class="office_pageopt">
<span class="red">←</span>
<a href="1209977,23194165.aspx" id="HeadPrevLink">上一章</a>
……
[/Quote]不要自己造轮子,dom已经造了轮子给你,他的效率不是正则能比的,用dom处理是最恰当的
hiti8 2011-03-21
  • 打赏
  • 举报
回复
正则不容易啊
lazyboy_wu 2011-03-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 life169 的回复:]

PHP code

$s = <<<eof
<div class="xx">
<div class="office_pageopt">
<span class="red">←</span>
<a href="1209977,23194165.aspx" id="HeadPrevLink">上一章</a>……
[/Quote]

+1 使用贪婪匹配,有一点,注意就是这个正则不适用

<div   class="office_pageopt">
<div class="red">←</div>
<a href="1209977,23194165.aspx" id="HeadPrevLink">上一章</a>
<a href="./1209977.aspx">回书目</a>
<a href="1209977,23204630.aspx" id="HeadNextLink">下一章</a>
<span class="red">→</span>
</div>



这种最好用DOM对象做
gyh9711 2011-03-20
  • 打赏
  • 举报
回复
学习了
dgthcz 2011-03-20
  • 打赏
  • 举报
回复
这种最好用DOM对象做
技术小黑屋 2011-03-19
  • 打赏
  • 举报
回复
楼上正解,这里尽量用heredoc
life169 2011-03-19
  • 打赏
  • 举报
回复

$s = <<<eof
<div class="xx">
<div class="office_pageopt">
<span class="red">←</span>
<a href="1209977,23194165.aspx" id="HeadPrevLink">上一章</a>
<a href="./1209977.aspx">回书目</a>
<a href="1209977,23204630.aspx" id="HeadNextLink">下一章</a>
<span class="red">→</span>
</div>
</div>
eof;
if(preg_match('/<div\s*class="office_pageopt">(.*?)<\/div>/is',$s,$arr)){
print_r($arr);
}

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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