搞php也有一年多了,以前没在意,现在发现这东西用处大……是专门看书(书名?),还是有啥在线教程?

解决方案 »

  1.   

    就那几个函数,先把函数搞清楚了。正则表达很复杂,但PHP用到的匹配大多在网上有答案。
      

  2.   

    google 搜索一下就行了。并不复杂。
      

  3.   

    记得我当初学正则的时候,每天早上一到公司,打开firefox的正则表达式插件。然后一边对照着教程,试验各种正则的语法。体会它的用法,大概几天时间就比较熟练了。所以说学这东西最好的方法是边学边练,光看是不行的,练习可以帮你加深记忆。当你将语法记忆的比较熟练后,可以尝试去写一些采集别人网站的程序。
      

  4.   

    正则没你想的那么复杂,也没你想的那么简单。可以说基本的那些元字符还是比较容易理解和记忆的。后面的那些零宽断言,平衡组,后向引用等还是需要多多体会其用法才能明白。另外,正则本身虽然是一套死的规范,但在实际使用时并不是死的,与程序语言一样,包含很多逻辑,很灵活。一个正则新手写出的表达式可能语句罗嗦,也无法做到那么的严谨。而高手可能很简单的一个表达式就能达到目的,且非常严谨。
    /*取出测试1,测试2*/
    $str = "<table class='c1'><tr><td class='c2'>测试1</td><td>测试2</td></tr></table>";新手的话,可能会这样写
    preg_match("/<td class='c2'>(.*)<\/td><td>(.*)<\/td>/is",$str,$m);对正则使用比较熟练的人,可能会这样写
    preg_match_all("/<td[^>]*>([^>]*)<\/td>/is",$str,$m);
    虽然都能取出结果,但第二个明显比第一个严谨性高,写法也简单一些。
      

  5.   

    preg_match_all("/<td[^>]*>([^>]*)<\/td>/is",$str,$m);topreg_match_all("/<td[^>]*>(.*)<\/td>/is",$str,$m);  //内容看情况使用贪婪,非贪婪。
      

  6.   

    上面手误,将([^<]*)写成了([^>]*),谢谢指正
      

  7.   

    to ls我意思是说如果在标签的内容中有 < 或 > 就不太好。。
      

  8.   

    标签的内容中应该不会出现<或>的,如果有它们会被转义成&lt;或&gt;