郑州SEO感悟与收集,关于生活与工作的回忆!你们能找到我也所你们本事大,哈哈….

preg_match_all的用法与衍生程序

2011-12-13

最近换空间发现了,以前的小偷程序。但是已经不能用了,百度已经换过版面了,于是就自己改下程序,还好用的是个开源的php程序。麻烦的是我不会php就只能边学边弄了,好了还是说下学习的结果吧preg_match_all的用法。

这个函数的说明就不写了,网上有很多,下面直接上实例:
<div id=”id1″>seo</div><div id=”id2″>seo2</div><div id=”id”>seo3</div>对上面的字符串取出相应的id与值。

 /*
 要求:
 <div id=”id_1″>seo</div><div id=”id_2″>seo2</div><div id=”id_3″>seo3</div>对上面的字符串取出相应的id与值。
     分析
 字符串是一个简单的HTML元素,每一个DIV元素对应该一个ID和内容,并且是独立的,
 首先考虑如何取出一个DIV内的ID值和内容,然后匹配其它类似的元素。一个DIV中需要取出两个值,也就是两个匹配的表达式,第一个表达式用于匹配ID值,第二个表达式用于匹配ID的内容。正则表达式常用的表达式使用小括号,那么前面的元素将会变成如下形式:
 <div id=”(id)”>(seo)</div>
 <div id=”(表达式1)”>(表达式2)</div>
 使用如上小括号把需要匹配的区域进行了划分,接下来就是如何匹配各个表达式内的内容.
 我们猜想一个ID可能是字母,数字或下划线,那这就变得简单了,使用中括号就可以实现
 [a-zA-Z0-9_]+ (表示匹配大小写字母,数字和下划线)
 [^<>]+ (表示不匹配<和>字符)
 不能匹配<或>字符,因为如果匹配这两个字符将会把后面使用的DIV都匹配出来,因此需要排除这两个字符开始的元素,也就是不匹配以<或>字符
 <div id=”(表达式1)”>(表达式2)</div>
 <div id=”([a-zA-Z0-9_]+)”>([^<>]+ )</div> 
 

preg_match_all(“<div id=”([a-z0-9_]+)”>([^<>]+)</div>”,$html,$result);
 array(3)
  [0]=> array(3)
  [0][0]=> string(30) “<divid=”id_1″>seo</div>”
      [0][1]=> string(33) “<divid=”id_2″>seo2</div>”
  [0][2]=> string(33) “<divid=”id_3″>seo3</div>”
 
  [1]=> array(3)
  [1][0]=> string(5) “id_1″
  [1][1]=> string(7) “id_2″
  [1][2]=> string(7) “id_3″
 
  [2]=> array(3)
  [2][0]=>string(8) “seo”  
  [2][1]=>string(9) “seo2″
  [2][2]=>string(9) “seo3″

  共有三个表达式,分别显示每一个表达式匹配的值,并以数组的形式存储,这样就把每一个DIV元素的ID和内容取出。
      使用正则表达式最主要还是要知道需要什么,然后跟椐需要进行匹配,并且思路清晰。
 */

 

 

 

作者:背影 | 分类目录:程序文章整理 | 标签:

一条评论

  1. 写的很好~~~支持一下~~

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>