PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PHP中的字符串解析大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试解析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中的字符串解析所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: