首页 / PHP / PHP中的字符串解析
PHP中的字符串解析
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP中的字符串解析,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1838字,纯文字阅读大概需要3分钟。
内容图文
![PHP中的字符串解析](/upload/InfoBanner/zyjiaocheng/672/c68e7e02ef064ce5a2e53918b31d8545.jpg)
我正在尝试解析PHP中的字符串:
-father_name "John" -father_weight 44.50
-kid >name "Marko" >age 12
-kid >name "Sevda" >age 17
-kid >name "Nathan" >age 19
主要有两种形式:
>属性(例如-father,-weight,-kid)
>子属性(例如>名称,>年龄)
注意:属性不是固定的,也不总是由单个空格分隔
它们的值有两种类型:
>字符串(如“ Marko”)
>整数或十进制(如12.00)
输出将是:
$array['attributes'] = array('father_name ','father_weight ');
$array['attributes']['kid'][] = array('name' => "Marko", 'age' => 12);
$array['attributes']['kid'][] = array('name' => "Sevda", 'age' => 17);
$array['attributes']['kid'][] = array('name' => "Nathan", 'age' => 19);
它应该分别返回FORMS(属性和子属性)和VALUE.
如何在PHP中巧妙地解析此行?
最后说明:我为此找到的解决方案:YAML.
解决方法:
试试这个:
function parse_attributes($string, $separators = array('-','>'), $level = 0){
$attributes = explode($separators[$level], $string);
$attrs = array();
$ret_arr = array();
foreach($attributes as $attribute){
if(!empty($attribute)){
$ex_attr = explode(' ',$attribute);
if(!empty($ex_attr[1])){
if(count($separators) > $level && strpos($attribute, $separators[$level+1])){
$ret = parse_attributes($attribute, $separators, $level+1);
array_push($ret_arr, $ret);
}
if (empty($ret_arr))
$attrs[$ex_attr[0]] = str_replace('"', '', $ex_attr[1]);
else
$attrs[$ex_attr[0]] = $ret_arr;
}
}
}
return $attrs;
}
使用方法:
$returned = parse_attributes('-father_name "John" -father_weight 44.50 -kid >name "Marko" >age 12 -kid >name "Sevda" >age 17 -kid >name "Nathan" >age 19');
print_r($returned);
返回值:
Array
(
[father_name] => John
[father_weight] => 44.50
[kid] => Array
(
[0] => Array
(
[name] => Marko
[age] => 12
)
[1] => Array
(
[name] => Sevda
[age] => 17
)
[2] => Array
(
[name] => Nathan
[age] => 19
)
)
)
并使用:
echo($returned['kid'][0]['name']);
返回值:
马可
注意:您可以指定更多的分隔符数组项目,这是您具有的每个属性级别的项目.
希望这可以帮助.
内容总结
以上是互联网集市为您收集整理的PHP中的字符串解析全部内容,希望文章能够帮你解决PHP中的字符串解析所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。