帮忙写个正则表达式

WBOY
发布: 2016-06-23 14:15:20
原创
770 人浏览过

		<dd class="clear">		   												<a  target="_blank" title="爱丽丝cos" href="/cp/sK7A9su_Y29z.html">爱丽丝cos</a>									<a  target="_blank" title="爱丽丝连衣裙" href="/cp/sK7A9su_wazSwsi5.html">爱丽丝连衣裙</a>									<a  target="_blank" title="爱丽丝梦游仙境" href="/cp/sK7A9su_w87Tzs_JvrM.html">爱丽丝梦游仙境</a>									<a  target="_blank" title="爱丽丝疯狂回归" href="/cp/sK7A9su_t-i_8bvYuek.html">爱丽丝疯狂回归</a>									<a  target="_blank" title="爱丽丝花盆" href="/cp/sK7A9su_u6jF6A.html">爱丽丝花盆</a>									<a  target="_blank" title="爱丽丝手办" href="/cp/sK7A9su_ytaw7A.html">爱丽丝手办</a>									<a  target="_blank" title="alice" href="/cp/YWxpY2U.html">alice</a>									<a  target="_blank" title="女仆" href="/cp/xa7GzQ.html">女仆</a>									<a  target="_blank" title="爱丽丝学园" href="/cp/sK7A9su_0afUsA.html">爱丽丝学园</a>									<a  target="_blank" title="爱丽丝菲尔" href="/cp/sK7A9su_t8a2-w.html">爱丽丝菲尔</a>									<a  target="_blank" title="爱丽丝手包" href="/cp/sK7A9su_ytaw_A.html">爱丽丝手包</a>									<a  target="_blank" title="爱丽丝复古" href="/cp/sK7A9su_uLS5xQ.html">爱丽丝复古</a>								</dd>
登录后复制

我现在要取这个页面的
之间这段内容里的title的值和href的值,因为这个页面其他地方也有这种格式,所以现在直接用
$contents_key = '~<a  target="_blank" title="(.*?)" href="(.*?)">~';preg_match_all($contents_key,$html,$contentskey);
登录后复制
这样会把dd标签外的相同格式的也包含进来,问下这个正则应该怎么写?


回复讨论(解决方案)

分两步就是了,先把dd标签内的内容匹配出来,再应用你的正则。

先把

之间的抓去出来 然后再去解析里面的title和链接

分两步就是了,先把dd标签内的内容匹配出来,再应用你的正则。
但是现在直接抓取dd标签也是抓取不到的

这dd标签中间有很多空格,我用(.*?)匹配不到。

你最终想要的结果是什么?

你最终想要的结果是什么?
我就想要title=“这里是我要的” href=“这里也是我想要的”,而且最好是一个正则,感觉两个正则要匹配两次,效率是不是有点太低了?

$s=<<<divagfdafg<dd class="clear">                                                   <a  target="_blank" title="爱丽丝cos" href="/cp/sK7A9su_Y29z.html">爱丽丝cos</a>                            <a  target="_blank" title="爱丽丝连衣裙" href="/cp/sK7A9su_wazSwsi5.html">爱丽丝连衣裙</a>                            <a  target="_blank" title="爱丽丝梦游仙境" href="/cp/sK7A9su_w87Tzs_JvrM.html">爱丽丝梦游仙境</a>                            <a  target="_blank" title="爱丽丝疯狂回归" href="/cp/sK7A9su_t-i_8bvYuek.html">爱丽丝疯狂回归</a>                            <a  target="_blank" title="爱丽丝花盆" href="/cp/sK7A9su_u6jF6A.html">爱丽丝花盆</a>                            <a  target="_blank" title="爱丽丝手办" href="/cp/sK7A9su_ytaw7A.html">爱丽丝手办</a>                            <a  target="_blank" title="alice" href="/cp/YWxpY2U.html">alice</a>                            <a  target="_blank" title="女仆" href="/cp/xa7GzQ.html">女仆</a>                            <a  target="_blank" title="爱丽丝学园" href="/cp/sK7A9su_0afUsA.html">爱丽丝学园</a>                            <a  target="_blank" title="爱丽丝菲尔" href="/cp/sK7A9su_t8a2-w.html">爱丽丝菲尔</a>                            <a  target="_blank" title="爱丽丝手包" href="/cp/sK7A9su_ytaw_A.html">爱丽丝手包</a>                            <a  target="_blank" title="爱丽丝复古" href="/cp/sK7A9su_uLS5xQ.html">爱丽丝复古</a>                        </dd>dafdsaf						div;preg_match('/<dd class="clear">(.+?)<\/dd>/s',$s,$m);					echo $m[1];
登录后复制


爱丽丝cos
爱丽丝连衣裙
爱丽丝梦游仙境
爱丽丝疯狂回归
爱丽丝花盆
爱丽丝手办
alice
女仆
爱丽丝学园
爱丽丝菲尔
爱丽丝手包
爱丽丝复古

试试用这个匹配dd的内容

$pattern = '/<dd class="clear">.*<\/dd>/is'
登录后复制

修饰符i:不分大小写
修饰符s:模式里的一个"点"将匹配所有字符,包括换行.没有他,换行将被排除在外.这个修饰符等同于Perl里面的/s修饰符

$contents_key = '~<dd class="clear">([\s\S]*?)</dd>~';
登录后复制

我自己想了个,这个搞定。

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!