我有这个变量:$lang['_city']
我需要将它分成两部分。
一部分将是$key == lang
,第二部分将是$ind == _city
我想我可以用某种regexp
来做这件事,但我对它并不擅长。
你能帮助我吗?
P.S。上面的例子只是一个例子。我需要一个抽象函数,它将使用任何传递的变量。所以例如,得到之前的任何东西[并削减$,然后得到['']内的任何东西..我知道逻辑但不是通往做它:) 此外,必须将新值分配给变量,如前所述。
由于
答案 0 :(得分:0)
$string = "\$foo['bar']";
preg_match('~^\$(?\'key\'[^\[]+)\[\'(?\'ind\'[^\']+)~', $string, $matches);
var_dump($matches['key'], $matches['ind']);
答案 1 :(得分:0)
preg_match
的正则表达式为:~^\$([^\[]+)\[\s*("[^"]+"|'[^']+')\s*\]$~
(移动到字符串时,您需要转义'
或"
。
比:
$key = $match[1];
$ind = substr( $match[2], 1, -1);
答案 2 :(得分:0)
你甚至不需要regexp :)
$str = "\$lang['city']";
$tmp = explode('[', $str);
$key = ltrim($tmp[0], '$');
$ind = trim($tmp[1], ']\'"');
echo $key . '=>' . $ind;
从PHP 5.4开始,你可以做得更短
$str = "\$lang['city']";
$key = ltrim(explode('[', $str)[0], '$');
$ind = trim(explode('[', $str)[1], ']\'"');
echo $key . '=>' . $ind;