Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.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_Cakephp - Fatal编程技术网

Php 读取最后一个括号之间的数据

Php 读取最后一个括号之间的数据,php,cakephp,Php,Cakephp,我在cakePHP中有一个控制器操作,使用POST请求以以下格式发送数据 address?level=node[Job][qs3] 在php或cakePHP中,仅从GET请求返回值“qs3”的最优雅方式是什么 当前,当我输出$_GET['level']的值时,我返回的是“node[Job][qs3]”。我只想返回“qs3”。可能: $\u获取['level']['node']['Job']['qs3'] 或者如果Job在这里是一个变量 $\u获取['level']['node'][$Job][

我在cakePHP中有一个控制器操作,使用POST请求以以下格式发送数据

address?level=node[Job][qs3]
在php或cakePHP中,仅从GET请求返回值“qs3”的最优雅方式是什么

当前,当我输出$_GET['level']的值时,我返回的是“node[Job][qs3]”。我只想返回“qs3”。

可能:

$\u获取['level']['node']['Job']['qs3']

或者如果Job在这里是一个变量

$\u获取['level']['node'][$Job]['qs3']

或者将$\u GET替换为$\u POST(不确定是否理解)


无论如何,print\u r($请求)将在这方面帮助您

您也可以使用正则表达式

preg_match_all("/\[([^\]]*)\]/", $_GET['level'], $matches);
echo $matches[1][1];
你可以这样试试

$level = explode("[",$_GET['level']);
echo trim(end($level), "]");

这是一种肮脏的方式,它有0%的优雅,因此是无限循环:

$text = "address?level=node[Job][qs3]";
$temp = $text;
while (true) {
    $begin = explode("[", $temp, 2);
    if (isset($begin[1])) {
        $end = explode("]", $begin[1], 2);
        $result = $end[0];
        $temp = $end[1];
    } else {
        break;
    }
}
echo $result;

PHPFiddle:

对不起,杰克,我不确定我是否解释得足够清楚。我试图将“only”qs3放入一个变量中,以便在查找中使用它。我不关心节点或工作。我希望这是有意义的:)确保一个preg\u match会做到这一点,然后
preg\u match\u all(“~\[([^\]*)\]~”,$你得到['level'],$m)然后结束($m)[1]以检索最后一个括号内容使用pr时的输出($this->request->data);或调试($this->request->data);聪明的,希望有一个更优雅的解决方案。在给你答案之前,我还要再等一段时间:)我已经用正则表达式更新了我的答案,你现在可以查看了。谢谢Tibor B的帮助。到目前为止,下面的评论比这个简单,而且目前正在运行:)