php正则表达式取得内容所有链接的方法

本文实例讲述了php正则表达式取得内容所有链接的方法。分享给大家供大家参考。具体如下:

这里提供二款关于php正则链接的方法,他们可以取得内容所有链接并且保存到一个数组,当然也可以把链接全部替换.

方法一,代码如下:

代码如下:

function get_all_url($code){ 
        preg_match_all('/<as+href=["|']?([^>"' ]+)["|']?s*[^>]*>([^>]+)</a>/i',$code,$arr); 
        return array('name'=>$arr[2],'url'=>$arr[1]); 
}

方法二,代码如下:

代码如下:

$site=substr($url,0,strpos($url,"/",8));//站点
$base=substr($url,0,strrpos($url,"/")+1);//文件所在目录
$fp = fopen($url, "r" );//打开url
 
while(!feof($fp))$contents.=fread($fp,1024);//
$pattern="|href=['"]?([^ '"]+)['" ]|u";
 
preg_match_all($pattern,$contents, $regarr, preg_set_order);//匹配所有href=
for($i=0;$i<count($regarr);$i++){//遍历所有匹配
if(!eregi("://",$regarr[$i][1]))//是否是相对路径,即是否还有://
if(substr($regarr[$i][1],0,1)=="/")//是否是站点的根目录
   echo "link".($i+1).":".$site.$regarr[$i][1]."<br/>";//根目录
else
   echo "link".($i+1).":".$base.$regarr[$i][1]."<br/>";//当前目录
else
echo "link".($i+1).":".$regarr[$i][1]."<br/>";//相对路径
}
fclose($fp);

希望本文所述对大家的正则表达式学习有所帮助。

(0)

相关推荐

  • php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)

    需要提取的内容如下: 复制代码 代码如下: <a href="http://baidu.com">http://baidu.com</a>这是第一个A标签,<a href="http://blog.baidu.com">成长脚印-专注于互联网发展</a>这是第二个A标签.http://www.jb51.net这是第一个需要被提取的URL地址,http://blog.baidu.com这是第二个需要被提取的URL地址'.

  • php 自写函数代码 获取关键字 去超链接

    1.根据权重获取关键字 复制代码 代码如下: function getkey($contents){ $rows = strip_tags($contents); $arr = array(' ',' ',"\s", "\r\n", "\n", "\r", "\t", ">", "“", "”"); $qc_rows = str_replac

  • php 短链接算法收集与分析

    短链接就不说了,大家已经都清楚了,如下所示就是短链接: 新浪微博 http://t.cn/SVpONM 腾讯微博 http://url.cn/302yor Yun.io http://d.yun.io/PNri2v 短链接的好处:1.内容需要:2.用户友好:3.便于管理. 如何实现呢,大概有三个步骤: 1.定义一个URL映射算法,可以将长的URL映射成短字符串: 2.使用一个存储(数据库?NoSQL?)来存储完成的映射: 3.实现自己的URL映射算法: 一般来说,第三步是我们比较头疼的,如何将一

  • windows服务器下IIS6/7下PHP 无法加载 php_curl.dll 等动态链接库

    问题: PHP 在 IIS6 或 IIS7 中无法加载 php_curl.dll 动态链接库. 解决方法: 在PHP手册中有相关说明:php_curl.dll:CURL,客户端 URL 库函数库:需要:libeay32.dll,ssleay32.dll(已附带) 所以只要将 libeay32.dll,ssleay32.dll 这两个库复制到 %WINDOWS% 目录下即可. PS:网上有很多人说将以上两个库复制到 %SYSTEM32%,而这完全不起作用,文章只会COPY,又不经考证,简直就是误人

  • phpMyAdmin 链接表的附加功能尚未激活的问题

    安装phpMyAdmin的时候我还是没有手动配置config文件,而是使用了它的setup功能. 除了 服务器名称 和 认证方式 以外都使用了默认值. 服务器名称自己随便输入了一个,认证方式修改成了http. 另外PMA数据库一页点了文本框后面的笔,把默认值填进去了. (这时候我已经创建了控制用户,而且把用户名和密码输入进去了.创建的方法我会在后面讲) 保存设置后,输入MySQL的root用户名和密码,打开phpMyAdmin的主画面后,出现了如下的错误 点了 请点击此处之后 看到的画面如下 解

  • phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)

    从多方查找资源并测试终于解决了问题,特记录下.其实如果在安装的时候,正确的安装,就不会出现下面的信息了. 如在Linux下安装,提示密码的时候,输入Root账号的密码就不会出现这个问题了! phpmyadmin一直有"链接表的附加功能尚未激活"的问题,登陆phpmyadmin后,会在底部显示"链接表的附加功能尚未激活.要查出原因,请点击此处."的提示.关于这个问题一直都没有着手去解决,直到今天,算是无聊的缘故吧! 如果你够细心的话,相信你也可以在你的phpmyadm

  • PHP正则匹配图片并给图片加链接详解

    正则: 复制代码 代码如下: $newstext=preg_replace(preg_replace('/(<img[^>]+src\s*=\s*"?([^>"\s]+)"?[^>]*>)/im', '<a href="$2″>$1</a>', $newstext); 解说: 1.preg_replace和str_replace的区别: str_replace只是纯字符替换,而preg_replace才是正则替换

  • php实现首页链接查询 友情链接检查的代码

    复制代码 代码如下: <?php /* * 网站首页超链接反查 友情链接查询 外链查询 * web技术爱好者 lost63.com原创 QQ:35501547 * 转载请注明出处 */ if($_GET['action']=="check"){ $domain=$_POST['domain']; //域名表单项为空,则获取地址栏参数 if($domain==""){ $domain=$_GET['domain']; } //网址 $url="http

  • phpMyAdmin链接MySql错误 个人解决方案

    装好wamp后在试图用phpMyAdmin链接MySql时出错,报错如下: phpMyAdmin 试图连接到 MySQL 服务器,但服务器拒绝连接.您应该检查 config.inc.php 中的主机.用户名和密码,并且确定这些信息与 MySQL 服务器的管理员所给出的信息一致. 而MySql报错如下: 091224 1:43:18 InnoDB: Starting shutdown... 091224 1:43:19 InnoDB: Shutdown completed; log sequenc

  • PHP使用正则表达式清除超链接文本

    可以用$str = preg_replace("/<a[^>]*href=[^>]*>|<\/[^a]*a[^>]*>/i","",$strhtml); 这段来实现需求,如果想要更多解决方法,可以参看以下的. 1.删除内容中的超链接 复制代码 代码如下: ereg_replace('<a([^>]*)>([^<]*)</a>','<font color="red"

  • PHP 超链接 抓取实现代码

    通用HTML标准超链接参数取得正则表达式测试 因为最近要做一个类似专业搜索引擎的东西,需要抓取网页的所有超链接. 大家帮忙测试一下子,下面的代码是否可以针对所有的标准超链接. 测试代码如下: 复制代码 代码如下: <?php // -------------------------------------------------------------------------- // File name : Noname1.php // Description : 通用链接参数获取正则表达式测试

  • php 正则表达式提取网页超级链接url的函数

    复制代码 代码如下: function match_links($document) { preg_match_all("'<\s*a\s.*?href\s*=\s*([\"\'])?(?(1)(.*?)\\1|([^\s\>]+))[^>]*>?(.*?)</a>'isx",$document,$links); while(list($key,$val) = each($links[2])) { if(!empty($val)) $mat

  • php 正则 过滤html 的超链接

    <?php echo preg_replace("/(?<=href=)([^\>]*)(?=\>)/i","#", "<a href='www.csdn.net'>你好,点这里看看</a><a href='www.jb51.net'>你好,点这里看看</a>"); ?> 正则:/(?<=href=)([^\>]*)(?=\>)/ (?<=exp

  • 检查url链接是否已经有参数的php代码 添加 ? 或 &

    比如分页,因为有些链接已经有参数了,在附加分页信息的时候不能把原有的参数丢掉,所以判断一下链接是否有参数,然后根据需要附加分页信息. 方法很简单: 复制代码 代码如下: ((strpos($url, '?') !== false) ? '&' : '?'); 检查链接中是否含有 ? ,如果有,如: http://www.test.com/index.php?id=id 则直接在链接后面添加一个 & 然后跟上分页信息: http://www.jb51.net/index.php?id=id&

  • PHP将页面中点击数量高的链接进行高亮显示的方法

    背景和需求 就好比说页面导航的左侧是分类,分类下面有很多链接.我现在想统计所有分类下面点击次数最多的一个,并把其颜色做特殊处理! 大致的数据结构如下: { "content": [ { "id": "1", "name": "htmldrive", "url": "http://www.htmldrive.net/", "cate": "

随机推荐