PHP正则的问题

relateTarget 2008-11-30 08:44:02
假如有以下字符串,怎么用正则不计大小写把符合<a href="somestr">test.html</a>这样格式中的test.html提取出来,但像"<A href="somestr">test4</a>"和"<A href="somestr">.html</a>"则不符合,则下面字符串提取结果为:test1.html,test2.html,test3.html。

<?php
$str='开始位置:-test1.html- <A HREF="somestr">test1.html</A> -test2.html- <a HREF="somestr">test2.html</a> -test3.html- <A href="somestr">test3.html</a> -test4.html- <A href="somestr">test4</a> -test5.html- <A href="somestr">.html</a>:结束位置';
?>
...全文
99 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hejunbin 2008-12-02
比如说你还要匹配pdf那么可以如下

<?php
$str='开始位置:-test1.html- <A HREF="somestr">test1.html</A> -test2.html- <a HREF="somestr">test2.pdf</a> -test3.pdf-
<A href="somestr">test3.html</a> -test4.html-
<A href="somestr">test4</a> -test5.html- <A href="somestr">.html</a>:结束位置';

preg_match_all ('/<a href[^>]*?>[^<]+?\.(?:html|pdf)<\/a>/is',$str, $arr );
echo '<pre>';
print_r( $arr);
echo '</pre>';

?>
  • 打赏
  • 举报
回复
relateTarget 2008-12-02
那如果也有其它文件,不一定全是html文件,那该怎么改呢
  • 打赏
  • 举报
回复
lusec3 2008-11-30
  • 打赏
  • 举报
回复
fox000002 2008-11-30
ls 的没有得到 test1.html,test2.html,test3.html
  • 打赏
  • 举报
回复
fxs_2008 2008-11-30

试试
<?php
$str='开始位置:-test1.html- <A HREF="somestr">test1.html</A> -test2.html- <a HREF="somestr">test2.html</a> -test3.html-
<A href="somestr">test3.html</a> -test4.html-
<A href="somestr">test4</a> -test5.html- <A href="somestr">.html</a>:结束位置';

preg_match_all ('|<a href[^>]*?>[^<]+?\.html</a>|is',$str, $arr );
echo '<pre>';
print_r( $arr);
echo '</pre>';

?>


  • 打赏
  • 举报
回复
filec75 2008-11-30
不懂,up
  • 打赏
  • 举报
回复
相关推荐
发帖
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
帖子事件
创建了帖子
2008-11-30 08:44
社区公告
暂无公告