喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

[北京]代朋友公司招聘PHP高级程序员多名

上一主题 下一主题
 13  1/2  1  2  > 
     
标题: url匹配问题.............  
 
drc333
注册会员
Rank: 2
初级会员



UID 65917
精华 0
积分 157
帖子 109
金钱 157 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-8-16
状态 离线
url匹配问题.............

$pattern="|href=['\"]?([^ '\"]+)['\" ]|U";

我这个正则式只能正确匹配规则的链接,就是 <a href="http://www.xx.com">这样的能正确提取出 http://www.xx.com

但是我现在需要能正确匹配所有的.例如包括
<a href=http://www.xx.com> <a href='http://www.xx.com'> <a href=a.htm> <a href=./a.htm> <a href=http://www.xx.com/>等等

我需要都能完全匹配正确提取出里面的链接.

请问这样的正则如何改?

[ 本帖最后由 drc333 于 2006-7-4 11:19 AM 编辑 ]




高速 稳定 开源 家族 贴吧 知道
2006-7-4 11:16 AM#1
查看资料  访问主页  发短消息  顶部
 
迎风
高级会员
Rank: 4
一二三四五,上山打老鼠


UID 66573
精华 0
积分 824
帖子 893
金钱 824 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2005-9-11
状态 离线
[推荐阅读] php论坛通用在网站首页登入无跳转解决方法


<?php
$str=<<<strtest
<a href=http://www.xx.com> <a href='http://www.xx.com'> <a href=a.htm> <a href=./a.htm> <a href=http://www.xx.com/>
strtest;
preg_match_all('/href\=[\\|\'|"]*(.+?)[\\|\'|"]*>/is',$str,$match);
print_r($match);
?>
[ 本帖最后由 迎风 于 2006-7-4 11:30 AM 编辑 ]




Azazazazazazazazazazazazazazazazazazazazazaz
2006-7-4 11:26 AM#2
查看资料  发短消息  顶部
 
sanders_yao
版主
Rank: 7Rank: 7Rank: 7
or2 =333


UID 30286
精华 0
积分 2531
帖子 4699
金钱 2528 喜悦币
威望 0
人脉 3
阅读权限 100
注册 2004-7-23
来自 北京 菜户营
状态 离线
[推荐阅读] 请教图片轮播的问题
preg_match_all("~<a.+?href=(?:\'|\")?([^ >\'\"]+)(?:\'|\")?.*?>~i", $str, $arrayClip);



最近写的一些代码都会在以下地址发布,有兴趣的来批:
http://www.phpx.com/happy/thread-131368-1-1.html
2006-7-4 11:34 AM#3
查看资料  Blog  发短消息  顶部
 
drc333
注册会员
Rank: 2
初级会员



UID 65917
精华 0
积分 157
帖子 109
金钱 157 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-8-16
状态 离线
[推荐阅读] 请教一个设计思路
二楼的不行哦.如果里面带了target或者class什么的就不行了.连target,class都取出 了

三楼的也不全可行,有时候会把 target取出了例如下面的这种情况

<a href=http://house.focus.cn/news/2006-07-04/219310.html
target=_blank class=blue1>美国70%房奴</a><br>

[ 本帖最后由 drc333 于 2006-7-4 11:40 AM 编辑 ]




高速 稳定 开源 家族 贴吧 知道
2006-7-4 11:34 AM#4
查看资料  访问主页  发短消息  顶部
 
drc333
注册会员
Rank: 2
初级会员



UID 65917
精华 0
积分 157
帖子 109
金钱 157 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-8-16
状态 离线
[推荐阅读] 请php高手指点。
不过这样就可以了

$pattern="~<a.+?href=(?:\'|\"|\n)?([^ >\'\"\n]+)(?:\'|\"|\n)?.*?>~i";




高速 稳定 开源 家族 贴吧 知道
2006-7-4 11:43 AM#5
查看资料  访问主页  发短消息  顶部
 
chinahtml
金牌会员
Rank: 6Rank: 6


UID 69683
精华 0
积分 1012
帖子 1019
金钱 1012 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2006-3-16
状态 离线
[推荐阅读] 求一个SQL写法
preg_match_all('~<a\s*href=["\s\']([^"\s\']+)~s',$content,$match);



-地振山冈,一派溪山千古秀
-门朝大海,山合河水万年流
2006-7-4 11:46 AM#6
查看资料  发短消息  顶部
 
sanders_yao
版主
Rank: 7Rank: 7Rank: 7
or2 =333


UID 30286
精华 0
积分 2531
帖子 4699
金钱 2528 喜悦币
威望 0
人脉 3
阅读权限 100
注册 2004-7-23
来自 北京 菜户营
状态 离线
[推荐阅读] 用gd生成图片,能不能同页加上text的描述(并非在图片上加上text)
抱歉,如果要匹配多行的话我的那个需要这样写:
preg_match_all("~<a.+?href=(?:\'|\")?([^ >\'\"]+)(?:\'|\")?.*?>~is", $str, $arrayClip);
测试过没有问题

$str = "<a href=http://www.xx.com> <a href='http://www.xx.com'> <a href=a.htm> <a href=./a.htm> <a href=http://house.focus.cn/news/2006-07-04/219310.html
target=_blank class=blue1>美国70%房奴</a><br> <a href=http://www.xx.com/> <a href=\"http://www.xx.com/\">";
preg_match_all("~<a.+?href=(?:\'|\")?([^ >\'\"]+)(?:\'|\")?.*?>~s", $str, $arrayClip);
print_r($arrayClip[1]);

[ 本帖最后由 sanders_yao 于 2006-7-4 11:48 AM 编辑 ]




最近写的一些代码都会在以下地址发布,有兴趣的来批:
http://www.phpx.com/happy/thread-131368-1-1.html
2006-7-4 11:46 AM#7
查看资料  Blog  发短消息  顶部
 
phphp
版主
Rank: 7Rank: 7Rank: 7
加班一族


UID 65188
精华 1
积分 182
帖子 3005
金钱 171 喜悦币
威望 10
人脉 1
阅读权限 100
注册 2005-7-20
来自 北京市海淀区
状态 离线
[推荐阅读] smarty+adodb做一个留言板,取五条记录慢得要命
(?:\'|\")??改成反向引用,



书到用时方恨少, 事非经过不知难
2006-7-4 11:47 AM#8
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
sanders_yao
版主
Rank: 7Rank: 7Rank: 7
or2 =333


UID 30286
精华 0
积分 2531
帖子 4699
金钱 2528 喜悦币
威望 0
人脉 3
阅读权限 100
注册 2004-7-23
来自 北京 菜户营
状态 离线
[推荐阅读] 求一个$_SERVER[]的相关文档


QUOTE:
原帖由 phphp 于 2006-7-4 11:47 AM 发表
(?:\'|\")??改成反向引用,
你是指(?!pattern) ?
这里似乎用不到




最近写的一些代码都会在以下地址发布,有兴趣的来批:
http://www.phpx.com/happy/thread-131368-1-1.html
2006-7-4 11:53 AM#9
查看资料  Blog  发短消息  顶部
 
drc333
注册会员
Rank: 2
初级会员



UID 65917
精华 0
积分 157
帖子 109
金钱 157 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2005-8-16
状态 离线
[推荐阅读] 怎么取得其他页面的form元素
$pattern="~<a.+?href=(?:\'|\"|\n)?([^ >\'\"\n]+)(?:\'|\"|\n)?.*?>~i";

只有这样才是完全有效的.已经过多网站测试.在sanders_yao 的方法上现加一个\n的条件即可




高速 稳定 开源 家族 贴吧 知道
2006-7-4 12:03 PM#10
查看资料  访问主页  发短消息  顶部
 13  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.030051 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP