如何在[]之间查找文本


How to find text between [ ]

我有一个类似的文本

[name:roccos] [phone:123324324] [tags:abc def ghi] [id:value]

我如何使用php找到name、phone等的值,所以我应该有这样的变量$name = 'roccos' $phone = '123324324',我可以单独为所有变量做这件事,或者有任何方法可以自动获得所有变量和值。。。

例如:在文本[abc:def] [phone:123456]中,冒号:之前的所有内容都将是变量名,冒号之后的值=>$abc = 'def' $phone = '123456'

只需使用正则表达式,preg_match_all:

$str = '[name:roccos] [phone:123324324] [tags:abc def ghi] [id:value]';
preg_match_all('/'[(.*?):(.*?)']/', $str, $matches, PREG_SET_ORDER);
$data = array();
foreach($matches as $match) {
    $data[$match[1]] = $match[2];
}

这是一个演示。注意,我使用了一个数组来保存数据,而不是直接将它们分配给全局变量;如果你从任何类型的用户输入中获取这些信息,那都是危险的。如果数据是安全的,您可以使用extract:进行扩展

extract($data);