Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获取大括号内的嵌套值_Php_Regex - Fatal编程技术网

Php 如何获取大括号内的嵌套值

Php 如何获取大括号内的嵌套值,php,regex,Php,Regex,如何使用php进入嵌套大括号 例如: {{ text1 {{text2 text3 {{text4}} text5}} }} 应该输出 1- text1 {{text2 text3 {{text4}} text5}} 2- text2 text3 {{text4}} text5 3- text4 这需要跟踪括号的数量,不能使用正则表达式来完成。您必须为此创建自己的解析器逻辑,对不起 与Perl一样,PCRE可以将嵌套结构匹配到任意深度(仅受内存限制-见下文)。下面是一个经过测试的脚本: 要

如何使用php进入嵌套大括号

例如:

{{ text1 {{text2 text3 {{text4}} text5}} }}
应该输出

1- text1 {{text2 text3 {{text4}} text5}}
2- text2 text3 {{text4}} text5
3- text4

这需要跟踪括号的数量,不能使用正则表达式来完成。您必须为此创建自己的解析器逻辑,对不起


与Perl一样,PCRE可以将嵌套结构匹配到任意深度(仅受内存限制-见下文)。下面是一个经过测试的脚本:

要匹配嵌套括号的正则表达式
我找到了我一直在寻找的答案,并把它放在这里,这样每个人都可以使用它。其实很简单,只有一句话:

  $text1=preg_replace("/\{\{(([^{}]*|(?R))*)\}\}/",'',$text1);

它将搜索所有{{text}}并用您想要的内容替换它们。您还可以使用preg_match_all将它们全部放在一个数组中。

是的,可以使用regex完成-您只是不够努力@ridgerunner True正则表达式无法做到这一点。也许有些引擎可以实现逻辑,但基本正则表达式不能。在所有引擎都能处理好之前,我坚持我的答案。此外,您必须开始权衡简单性和可读性……当您说“真”正则表达式时,您指的是哪个特定引擎?Ruby、Java、JavaScript、Perl、PHP、C#、Python甚至grep?正则表达式很长一段时间以来都不是正则表达式。请看tchrist对类似说法的出色回应:。对不起,我不明白,为什么人们投票支持这个问题。谁能给我解释一下吗?