Home  >  Article  >  Backend Development  >  帮忙写个正则表达式

帮忙写个正则表达式

WBOY
WBOYOriginal
2016-06-23 14:15:20812browse

		<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>~';

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn