如何在[]之间找到文字

时间:2012-03-24 17:08:53

标签: php regex

我有这样的文字

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

我如何使用php找到姓名,电话等的值,所以我应该有这样的变量$name = 'roccos' $phone = '123324324',我可以单独为所有人做这个或者有什么方法可以自动获取所有变量和值...

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

1 个答案:

答案 0 :(得分:3)

只需使用正则表达式,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];
}

Here's a demo.请注意,我使用数组来保存数据,而不是直接将它们分配给全局变量;如果您从任何类型的用户输入中获取此信息,那将是危险的。如果数据是安全的,您可以使用extract

进行扩展
extract($data);