牛骨文教育服务平台(让学习变的简单)
博文笔记

php字符串解析为数组的方法

创建时间:2014-11-06 投稿人: 浏览次数:198

这周在扫thinkphp3.13源码,主要是$this->display()方法的流程,学到一些有用的东西。

$str = "id="list" name="list" key="KEY"";

把上述字符串变为

Array
(
    [id] => list
    [name] => list
    [key] => KEY
)

该如何施展呢?


如果放到以前,我会这么写

$str = "id="list" name="list" key="KEY"";
$arr = explode(" ", $str);
$list = array();
foreach ($arr as $value) {
    $value = explode("=", $value);
    $list[$value[0]] = trim($value[1], """);
}

但现在又多了几种写法。


使用正则的写法

preg_replace("#(w+)="(w+)"#e", "$var["\1"]=strip_tags("\2");", $str);

没错,你没看错,就一句话,搞定。要注意的是使用e参数的安全问题。


使用xml的写法

$xml    =   "<tpl><tag ".$str." /></tpl>";
$xml    =   simplexml_load_string($xml);
$xml    =   (array)($xml->tag->attributes());
$array  =   array_change_key_case($xml["@attributes"]);

是不是很cool?看来,得多看看优秀框架的源码,多学习知识,扩展自己的视野,不能自己把自己给局限在一个小圈子内,否则就如同网上说的,一个月的工作经验使用了十年,到头来,还是一个月的功力。










声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。