这周在扫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 = '';
$xml = simplexml_load_string($xml);
$xml = (array)($xml->tag->attributes());
$array = array_change_key_case($xml['@attributes']); 是不是很cool?看来,得多看看优秀框架的源码,多学习知识,扩展自己的视野,不能自己把自己给局限在一个小圈子内,否则就如同网上说的,一个月的工作经验使用了十年,到头来,还是一个月的功力。