请会php正则的帮帮忙

ffvsnn520 发布于 2014/06/24 17:16
阅读 186
收藏 0
PHP

<meta name="home-data" content="s=254275369;a=1;cid=1;gt=59616707"/>

一个网页里面有很多meta.我就只想匹配这一条.请各位帮帮忙.非常感谢

以下是问题补充:

@ffvsnn520:匹配meta标签中name为home-data的content内容. (2014/06/24 17:31)
@ffvsnn520:匹配<mate>标签中name='home-data' 的content内容.因为一个页面有很多《mate>标签,但是name='home-data'的这条content内容是我需要的.可以说是匹配这一条中content的内容.(有很多mate,不是只有这一个mate) (2014/06/24 17:57)
加载中
0
f
ffvsnn520

引用来自“雪梨苹果”的评论

preg_match('/<meta\s+name=[\'\"]home-data[\'\"]\s+content=[\'\"](.*?)[\'\"]\s*\/>/',$str,$match); 这样更好点

引用来自“ffvsnn520”的评论

其实我很想获取content中的一个tg=(这里是一个不限长度的数字)其实我很想直接获取content中的这一段的.先采纳,麻烦您帮忙回答一下,非常感谢
非常感谢啊.你那样的好像还是匹配不到,不知道是不是单引号的原因,我是这样写的,分享给你.$p = '/\"microscope-data\"\s+content=\"(.*?)\"/is';这个是为了转移淘宝里面的一些链接写的
雪梨苹果
雪梨苹果
不是吧,我按着你给的代码测试没问题的。。。不知是不是你的源代码混了其他东西。。。那没什么了,下班。。。
0
leo108
leo108

问正则不是这么问的

leo108
leo108
回复 @ffvsnn520 : 你总得说说规则是什么,不然鬼知道你要匹配什么
f
ffvsnn520
$p = '/<meta name=\"(.*?)\" content=\"(.*?)*\"/is';我是这样写的。但是匹配的太多了.后面那个content里面的键值加分号写不出来
0
荆棘谷-部落-我要么
荆棘谷-部落-我要么

不明白...要匹配这一条的哪个部分,是全部匹配,还是 home-data 还是 name 和 content 里的内容?

0
Z
Zicl
<meta name=\"home-data\" content=\"(.*?)*\"
Z
Zicl
回复 @ffvsnn520 : 有可能是空格的问题,你试试这个<meta[^>]*?name=\"home-data\"[^>]*?content=\"(.*?)*\"
f
ffvsnn520
您好啊,这样子是取不到的,我也不知道为什么.直接写了name的话就一个mate都不会匹配到了.
0
雪梨苹果
雪梨苹果
preg_match('/<meta\s+name=[\'\"]home-data[\'\"]\s+content=[\'\"](.*?)[\'\"]\/>/',$str,$match);
print_r($match);
雪梨苹果
雪梨苹果
回复 @ffvsnn520 : 空格问题,因为不知是多少个,所以\s+
f
ffvsnn520
你好,解决了,不要<meta那段就可以匹配到.加了就为空.我想请问一下是为什么了?
0
雪梨苹果
雪梨苹果
preg_match('/<meta\s+name=[\'\"]home-data[\'\"]\s+content=[\'\"](.*?)[\'\"]\s*\/>/',$str,$match); 这样更好点
0
f
ffvsnn520

引用来自“雪梨苹果”的评论

preg_match('/<meta\s+name=[\'\"]home-data[\'\"]\s+content=[\'\"](.*?)[\'\"]\s*\/>/',$str,$match); 这样更好点
其实我很想获取content中的一个tg=(这里是一个不限长度的数字)其实我很想直接获取content中的这一段的.先采纳,麻烦您帮忙回答一下,非常感谢
雪梨苹果
雪梨苹果
一定要<meta name="home-data" content="s=254275369;a=1;cid=1;gt=59616707"/> 这个一步一步的正则截取,不能一下子截取到gt=*,这样不安全,必须是name="home-data"的meta的content。
雪梨苹果
雪梨苹果
preg_match('/<meta\s+name=[\'\"]home-data[\'\"]\s+content=[\'\"].*?gt=(\d*)[\'\"]\s*\/>/',$str,$match);
返回顶部
顶部