正则提取连接地址的问题

Dereky 2006-08-03 04:15:08
用以下正则提取字符串中的url地址
$p = '#http.+?html#is';
preg_match_all($p, $cont, $match);
print_r( $match );

结果是正确返回了,可是其中出现了问题,以下是返回的部分结果:
[33] => http://test.domin.com/06/0429/08/2FS4GKTO00051CBQ.html
[34] => http://test.domin.com/06/0429/08/2FS4DUKE00051CBQ.html
[35] => http://test.domin.com/06/0429/05/2FRR92S700051CBQ.html
[36] => http://bbs.test.domin.com/board/rep.jsp?b=lottery&i=48979&p=0" target="_blank" class="f14">三个和尚挑水喝啊</a> <span class="time">(04-28 23:27)</span><br>
・<a href="http://test.domin.com/06/0428/22/2FR3MEJI00051CBQ.html
[37] => http://test.domin.com/06/0428/22/2FR3JVHK00051CBQ.html
[38] => http://test.domin.com/06/0428/22/2FR3AR2V00051CBQ.html
[39] => http://test.domin.com/06/0428/22/2FR368H800051CBQ.html

也就是说,下标[36]的部分,出现了异常情况,并不是我想要的结果

请教,如何修改正则,能把此类异常排除出去.也就是说,我只要完全匹配
以http:开头并且以.html结尾的连接地址
...全文
242 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zeroleonhart 2006-08-03
  • 打赏
  • 举报
回复
$p = '#http[^\s]+?\.html#is';
yunfeifan 2006-08-03
  • 打赏
  • 举报
回复
如果确定连接都是在'里边可以这么写
"/http[^\']*\.html/iUs"
试试
Dereky 2006-08-03
  • 打赏
  • 举报
回复
但是 ,但字符串为以下这种情况的时候,另一种异常又出现了
<td><font color='#000000'>·</font><a style='text-decoration: none' href='http://test.domin.com/NewsSys/NewsHtml/BT/2006-8-2 22-39-051.html' target=_blank ><font color='#000000' size='2px'>猫和老鼠</font></a></td><td align=right><font color='#000000' size='2px'>08-03</FONT></td></tr><tr onMouseOver=javascript:this.style.background='#E9E9E9' onMouseOut=javascript:this.style.background='#ffffff'><td><font color='#000000'>·</font><a style='text-decoration: none' href='http://test.domin.com/NewsSys/NewsHtml/BT/2006-8-2 21-33-311.html' target=_blank ><font color='#000000' size='2px'>tom and jason</font></a></td><td align=right><font color='#000000' size='2px'>08-03</FONT></td></tr><tr onMouseOver=javascript:this.style.background='#E9E9E9' onMouseOut=javascript:this.style.background='#ffffff'><td><font color='#000000'>·</font><a style='text-decoration: none' href='http://test.domin.com/NewsSys/NewsHtml/BT/2006-8-2 21-32-391.html' target=_blank ><font color='#000000' size='2px'>小天鹅</font></a></td>

用楼上的正则去提取的时候,得到的url是
http://test.domin.com/NewsSys/NewsHtml
后面的被截断了

请教没有一种完美的正则 提取方案吗
zeroleonhart 2006-08-03
  • 打赏
  • 举报
回复
$p = '#http[^\s]+?html#is';

21,887

社区成员

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

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