首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

求 匹配多个a标签联接和名字 正则表达式

2014-04-21 
求 匹配多个a标签连接和名字 正则表达式比如这样的源码

求 匹配多个a标签连接和名字 正则表达式
比如这样的源码

<td width="95%" class="tdW" colspan="2" ><div class=tdL>知识</div> <a href="http://www.cqvip.com/">维普资讯</a> <a href="http://www.chinaqking.com/">中国期刊网</a> <a href="http://www.qikan.com.cn/">龙源期刊网</a> <a href="http://bk.183.com.cn/index.do">邮政报刊订阅网</a> <a href="http://www.zazhipu.com/">杂志铺</a> <a href="http://wiki.mbalib.com/">MBA智库百科</a> <a href="http://www.cosmoscape.com/">星空天文网</a> <a href="http://www.quanxue.cn/">劝学网</a><br> <a href="http://www.astronomy.com.cn/bbs/">牧夫天文论坛</a> <a href="http://www.patent-cn.com/">专利之家</a> <a href="http://www.sciam.com.cn/">环球科学</a> <a href="http://songshuhui.net/">科学松鼠会</a> <a href="http://www.ufo-1.cn/">UFO探索网</a> <a href="http://www.guokr.com/">果壳网</a> <a href="http://www.5xue.com/">我学网</a> <a href="http://v.163.com/open/">网易公开课</a><br> <a href="http://zh.wikipedia.org/">维基百科</a> <a href="http://www.51zxw.net/">我要自学网</a> <a href="http://www.cscse.edu.cn/">中国留学网</a> <a href="http://www.zhihu.com/">知乎</a> <a href="http://tech.163.com/school/video/">网易学院</a> <a href="http://wenwen.soso.com/">搜搜问问</a> <a href="http://xue.baidu.com/">新手学上网</a> <a href="http://nnsa.mep.gov.cn/">国家核安全局</a><br> <a href="http://www.wordlm.com/">word联盟</a> <a href="http://iask.sina.com.cn/">爱问知识人</a> <a href="http://www.wenming.cn/">中国文明网</a> </td>


唉 说来都不好意思,

前不久问了这个问题 ,但是当时是只有一个a标签时,有很多好心人帮我解决了。http://topic.csdn.net/u/20111216/16/934599d3-8e99-4b94-8dae-28e5b9c455c4.html
但是,现在是多个A标签时,我怎么改都是出错。
还请高手指点一下。我应该怎么弄一下。


[解决办法]
preg_match_all('/<a.*href="(.*)".*>(.*)</isU', $str, $matches);
foreach($matches[1] as $k=>$href) {
    $arr[$matches[2][$k]] = $href;
}
var_export($arr);
/**
输出结果:
array ( '维普资讯' => 'http://www.cqvip.com/', '中国期刊网' => 'http://www.chinaqking.com/', '龙源期刊网' => 'http://www.qikan.com.cn/', '邮政报刊订阅网' => 'http://bk.183.com.cn/index.do', '杂志铺' => 'http://www.zazhipu.com/', 'MBA智库百科' => 'http://wiki.mbalib.com/', '星空天文网' => 'http://www.cosmoscape.com/', '劝学网' => 'http://www.quanxue.cn/', '牧夫天文论坛' => 'http://www.astronomy.com.cn/bbs/', '专利之家' => 'http://www.patent-cn.com/', '环球科学' => 'http://www.sciam.com.cn/', '科学松鼠会' => 'http://songshuhui.net/', 'UFO探索网' => 'http://www.ufo-1.cn/', '果壳网' => 'http://www.guokr.com/', '我学网' => 'http://www.5xue.com/', '网易公开课' => 'http://v.163.com/open/', '维基百科' => 'http://zh.wikipedia.org/', '我要自学网' => 'http://www.51zxw.net/', '中国留学网' => 'http://www.cscse.edu.cn/', '知乎' => 'http://www.zhihu.com/', '网易学院' => 'http://tech.163.com/school/video/', '搜搜问问' => 'http://wenwen.soso.com/', '新手学上网' => 'http://xue.baidu.com/', '国家核安全局' => 'http://nnsa.mep.gov.cn/', 'word联盟' => 'http://www.wordlm.com/', '爱问知识人' => 'http://iask.sina.com.cn/', '中国文明网' => 'http://www.wenming.cn/', )

//PS:一次达到,好像没啥方法。
*/

[解决办法]
<?php
$str = '<td width="95%" class="tdW" colspan="2" ><div class=tdL>知识</div> <a href="http://www.cqvip.com/">维普资讯</a> <a href="http://www.chinaqking.com/">中国期刊网</a> <a href="http://www.qikan.com.cn/">龙源期刊网</a> <a href="http://bk.183.com.cn/index.do">邮政报刊订阅网</a> <a href="http://www.zazhipu.com/">杂志铺</a> <a href="http://wiki.mbalib.com/">MBA智库百科</a> <a href="http://www.cosmoscape.com/">星空天文网</a> <a href="http://www.quanxue.cn/">劝学网</a><br> <a href="http://www.astronomy.com.cn/bbs/">牧夫天文论坛</a> <a href="http://www.patent-cn.com/">专利之家</a> <a href="http://www.sciam.com.cn/">环球科学</a> <a href="http://songshuhui.net/">科学松鼠会</a> <a href="http://www.ufo-1.cn/">UFO探索网</a> <a href="http://www.guokr.com/">果壳网</a> <a href="http://www.5xue.com/">我学网</a> <a href="http://v.163.com/open/">网易公开课</a><br> <a href="http://zh.wikipedia.org/">维基百科</a> <a href="http://www.51zxw.net/">我要自学网</a> <a href="http://www.cscse.edu.cn/">中国留学网</a> <a href="http://www.zhihu.com/">知乎</a> <a href="http://tech.163.com/school/video/">网易学院</a> <a href="http://wenwen.soso.com/">搜搜问问</a> <a href="http://xue.baidu.com/">新手学上网</a> <a href="http://nnsa.mep.gov.cn/">国家核安全局</a><br> <a href="http://www.wordlm.com/">word联盟</a> <a href="http://iask.sina.com.cn/">爱问知识人</a> <a href="http://www.wenming.cn/">中国文明网</a> </td>';
$patten = '/<a +href="([^"]*)">(.*)<\/a>/iU';
preg_match_all($patten,$str,$match);
$result = array();


for($i = 0;$i<count($match[2]);$i++){
    $result[$match[2][$i]] = $match[1][$i];
}
echo "<pre>";
print_r($result);
?>


[解决办法]
引用:
可以问一下,你是怎么知道'/<a.*href="(.*)".*>(.*)</isU
这样改可以匹配出来哟、
我改了好久,都没有改出来。

引用:

PHP code
preg_match_all('/<a.*href="(.*)".*>(.*)</isU', $str, $matches);
foreach($matches[1] as $k=>……


你是用的preg_match不是用的preg_match_all吧
[解决办法]
贴你的代码和测试字符串出来就知道了。。
[解决办法]
我曾经是这样改的 
/<a[^>]* href="(.*?)".+>(.*?)<\/a>/isU

/<a[^>]* href="(.*)".+>(.*)<\/a>/isU
但是都不行。

不知道为啥。-
----------------------------------------------------------------
你这里是一个 + 也就是至少要匹配一个字符,不出来也是正常的

热点排行