php-将嵌套的文本转换为字符串
作者:互联网
我目前正在使用PHP,但我想还有其他编码语言可以更好地解决此问题.如果您对其他可能更好用的编码语言有任何建议,请告诉我.
我正在尝试将嵌套文本转换为单独的字符串.
很难解释,因为英语不是我的母语,所以我将写一个我要完成的示例.
来源:
foo {
bar tree;
bar ball/sand;
snafu {
string;
}
random {
nested {
value;
bohica;
}
}
}
目标:
foo bar tree
foo bar ball/sand
foo snafu string
foo random nested value
foo random nested bohica
到目前为止,我最好的尝试是:
foreach($curlybrace as $stance){
$semicolon = explode(';',$string);
foreach($semicolon as $break){
$result = 'set ' . $curlybrace[0] . $break .'<br />';
echo $result . '<br />';
}
}
在上面的代码中,我尝试使用几个PHP函数,例如str_replace,trim,preg_replace,preg_split,implode,explode,通过删除留下的花括号来爆炸以修改结果,但我无法完成这项工作.
非常感谢所有关于如何进行这项工作的提示和帮助.
解决方法:
这里的代码片段只是逐个遍历整个数组.并决定{,}和,是向上还是向下一步,或者是否需要打印实际字符串.
$buf = "";
$brace_level = 0;
$words = array();
for ($i = 0; $i < strlen($text); $i++) {
switch ($text[$i]) {
case '{':
$words[$brace_level] = trim($buf);
$buf = "";
$brace_level++;
break;
case '}':
unset($words[$brace_level]);
$brace_level--;
unset($words[$brace_level]);
break;
case ';':
$words[$brace_level] = trim($buf);
$buf = "";
print implode(" ", $words)."\n";
break;
default:
$buf .= $text[$i];
}
}
标签:preg-split,replace,preg-replace,php,nested-loops 来源: https://codeday.me/bug/20191123/2065414.html