PHP 正则表达式从数组中获取字符串print_r像字符串一样


Php regexp get the strings from array print_r like string

我试图在这里列出如何匹配看起来像数组打印器的字符串。

variable_data[0][var_name]

我想从上面的例子中得到 3 个字符串,variable_data、0 和 var_name。上面的示例保存在数据库中,因此可以重新创建相同的数组结构,但卡住了。此外,if 案例应查找 IF 字符串(如上所述(在该结构中,否则不需要preg_match。

注意:我不想序列化该数组,因为数组"可能"包含一些在反序列化时可能会破坏它的字符,并且我还需要数组中的该值完全可见。

任何具有正则表达式技能的人都可能知道这种方法?

溶液:

('b(['w]*['w]).'b(['w]*['w]).+('b['w]*['w]))

应该跳过 Thos 2 第一个索引...但我仍然得到我想要的:)

不是没有,但你不能做..

$result = explode('[', someString);
foreach ($result as $i => $v) {
    $temp = str_replace(']'. ''. $result[$i]);
    //Do something with temp
}
显然,您需要根据您

正在做的事情稍微编辑上述内容,但它非常简单,甚至为您提供了相同的灵活性,并且您不需要调用匹配引擎......

我不认为我们在这里为人们构建正则表达式......相反,请参阅 http://regexpal.com/以获取带有视觉辅助的正则表达式测试器/构建器。

此外,人们通常不知道如何正确使用它们,然后由其他人为他们创建表达式来培养。

请记住,复杂的表达式可能会产生可怕的性能开销,尽管您的请求似乎并不复杂......

然后在强制发布您完成的正则表达式并回答您自己的问题之后,最多 1337ne$$ :)

但既然我很好,这就是你的奖励:

'[.+']'['d+']

 [a-z]+_[a-z]+'[.+']'['d+']

根据您要从字符串中匹配的内容(您没有指定(,所以我假设所有

两者的执行方式如下:

arr_var[name][0]; //Matched
arr_var[name]; //Not matched

arr_var[name][0][1];//Matched
arr_var[name][2220][11];//Matched

再次,在上面的链接中测试它们并使用视觉辅助工具理解它们。

解决方案:

('b(['w]*['w]).'b(['w]*['w]).+('b['w]*['w]))

应该跳过这两个前索引...但我仍然得到我想要的:)

编辑

这是改进的:

$str = "variable[group1][parent][child][grandchild]";
preg_match_all('/('b(['w]*['w]))/', $str,$matches);
echo '<pre>';
    print_r($matches);
echo '</pre>';
// Output
Array  
        (  
            [0] => variable  
            [1] => group1  
            [2] => parent  
            [3] => child  
            [4] => grandchild  
        )