Php 读取最后一个括号之间的数据
我在cakePHP中有一个控制器操作,使用POST请求以以下格式发送数据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][
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的帮助。到目前为止,下面的评论比这个简单,而且目前正在运行:)