正则表达式
Posted 别安驹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
平时开发的正则表达式基本都是整理现成的,也没太在意如何编写正则表达式,最近要采集一些数据就大致看了下正则表达式,当时觉得写起来应该没什么问题,WTF当去写的时候脑子一片空白???所以记录下正则的使用过程!!
先来采采自己网站如下图准备采集导航栏的数据,接下来上代码:
<?php header("content-type:text/html;charset=utf-8"); $html = file_get_contents("http://www.bieanju.com/");
//采集div id="nav"开始的第一个div的所有内容 preg_match_all(\'/<div id=\\"nav\\">(.*?)<\\/div>/i\',$html,$mat); $htmls = $mat[1][0]; print_r($htmls);
//打印如下图发现ul结束的时候多余了个script ?>
//剔除 script标签 $htmls = preg_replace("/<script(.*)?<\\/script>/", "", $htmls); print_r($htmls);
//OK结果如下图没有问题进行下一步
//剔除a标签的href属性 此处注重说明下\\b的使用:匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er”。 $htmls = preg_replace("/\\bhref=\\"([^\\"]*)\\"/i", "", $htmls); print_r($htmls);
此时进行最后一步处理目前的数据接口拿到最终的导航栏数据array
//把当前的dom结构用simplexml_load_string装车对象然后在转数组最终处理成标准一维数组 $string = json_decode(json_encode((array)simplexml_load_string($htmls)),true);
//使用array_column取出最终数据重新组装数组
$string = array_column($string[\'li\'], \'a\'); print_r($string);
OK,正则表达式就这样后边在总结!
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性