Php 清除html中某些语法的正则表达式替代方法

Php 清除html中某些语法的正则表达式替代方法,php,preg-match-all,substr,strpos,Php,Preg Match All,Substr,Strpos,我有函数,放在html代码里面。这些函数具有以下语法规则: 有“#”符号作为打开的标记 打开的“#”标记后面有一个函数名。函数名可以包含数字(1,2,3)、字母(a、b、c)和下划线(33;) 在函数名之后,有一对括号包含paramater。参数可以包含任何内容,包括字母数字、算术运算符(,=,!),以及以下内容:@、#、$、%、^、&、(,)、?、*、/、[,] 参数之后是放在花括号内的html代码 最后,函数使用“#”标记关闭 这不是我真正的功能,但它给出了上述规则的全部想法: <ht

我有函数,放在html代码里面。这些函数具有以下语法规则:

  • 有“#”符号作为打开的标记
  • 打开的“#”标记后面有一个函数名。函数名可以包含数字(1,2,3)、字母(a、b、c)和下划线(33;)
  • 在函数名之后,有一对括号包含paramater。参数可以包含任何内容,包括字母数字、算术运算符(,=,!),以及以下内容:@、#、$、%、^、&、(,)、?、*、/、[,]
  • 参数之后是放在花括号内的html代码
  • 最后,函数使用“#”标记关闭
  • 这不是我真正的功能,但它给出了上述规则的全部想法:

    <html>
    #v123w(r(!@3o=?w){
    <div></div>
    }#
    #131ie_w(13gf$>&*()(*&){
    <div></div>
    }#
    </html>
    
    
    #v123w(r(!@3o=?w){
    }#
    #131ie_w(13gf$>&*()(*&){
    }#
    
    一直以来,我都在使用这个正则表达式来捕获函数中的所有函数名、参数和html字符串:

    #(\w+)\(*([\w\d\s\=\>\<\[\]\"\'\)\(\&\|\*\+\-\%\@\^\?\/\$\.\!]*)\)\)*{((?:(?R)|.)*?)}#
    

    (\w+)(*([\w\d\s\=\>\这里是对正则表达式的一个改进,效率更高一些:

    #(\w+)\(([\w\s=><[\]"')(&|*+%@^?\/$.!-]*)\){(.+?)}#
    

    #(\w+)\([\w\s=>php中的preg_match_all函数对长字符串不起作用为什么你这么认为?为什么不编写解析器?@AbraCadaver,因为正则表达式在有限的可用进程堆栈中工作,所以你可以在这里阅读更多内容:@Toto,我的函数不是基于xml的,所以不可能使用php xml解析器。请看一个更高效的正则表达式。