Heim  >  Fragen und Antworten  >  Hauptteil

php正则匹配p标签及带特定的中文

<p>
第一章 什么什么
</p>

我想用php正则匹配到p标签还有文字内容。

说明一下情况,
1、p标签里面可能有回车、空格;
2、中文文字方面,“一”是会变的,“什么什么”也会变


高洛峰高洛峰2923 Tage vor1092

Antworte allen(2)Ich werde antworten

  • 欧阳克

    欧阳克2016-11-11 13:38:31

    正则不好表达,用strpos匹配简单点

    Antwort
    0
  • 三叔

    三叔2016-11-11 13:37:52

    我这么说吧。不用很复杂的道理,简单的几个用例就坑死你:

    This is your text.

     This is a valid paragraph too, since HTML 

     paragraph don't have to contain an explicit ending tag.  < p id = "sample" > This is another paragraph.   /* 

     And this is another trap. 

     */ 

    正则文法在理论上,不足以表示标签之间的嵌套关系。形式文法中,正则文法是HTML的上下文无关文法的子集。即正则表达式的逻辑,理论上不足以表达HTML的文法结构。这一点请参考《编译原理》、《有限自动机与形式文法》这两门课程的相关知识。

    而在实际应用中,正则更是不足(或极难)表达:

    标签内部的空格和换行

    标签的属性

    不显式写出终止标签的情况

    注释、脚本的影响

    这个问题说了一遍又一遍:不要用正则解析HTML,请使用一个规范的解析器(Parser)。——在某些场合,针对特定的简易用例,用正则你高兴就好。但切记不要写出很复杂的正则表达式,更不要试图用正则去“无缺陷、普适的”匹配HTML,因为你迟早会失败。

    PHP的HTML解析可以通过PHP原生的DOM模块(某些服务器环境下可能需要安装对应扩展),或者第三方HTML解析库来实现。


    Antwort
    0
  • StornierenAntwort