任何人都可以建议一种解析字符串的替代方法:(['class': 'navigation', 'id': 'navigation'])
。
我以前用过:
if(strpos($match[1], '[') === 0)
{
$render = array();
foreach(explode(',', substr($match[1], 1, -1)) as $arr)
{
$parts = explode(':', $arr);
if(count($parts) == 2)
{
$render[substr(trim($parts[0]), 1, -1)] = substr(trim($parts[1]), 1, -1);
}
else
{
$render[] = substr(trim($parts[0]), 1, -1);
}
}
$args[] = $render;
}
elseif(strpos($match[1], "'") == 0)
{
$args[] = substr($match[1], 1, -1);
}
但是,理解这种方法的缺点并不需要很长时间,例如, ['title':'Tom's diary']会使代码完全失败。
能够识别错误的条目并将其遗漏也很好。目前我所做的就是使用|{{([^}]+)}}|
来捕捉所有函数,它们看起来像:{{foo}},{{foo('test','best')}}或{{foo([' array':'bar'])}}。如果您有快速解决方案,如果您分享它,我将不胜感激。
答案 0 :(得分:4)
你的字符串格式似乎离JSON不太远 - 即使它似乎不是真正的JSON (你使用[]
而不是{}
,arround什么似乎是一个对象)。
也许您可以更改格式,以便使用JSON?
这样您就可以使用json_encode()
和json_decode()
函数。
当您使用标准格式时,更多人将能够处理您的数据。
答案 1 :(得分:1)
这是一个json字符串,只需使用 json_decode 将其解析为数组。