2012-03-24 8 views
-5

ich einen Text wie diesenWie Text finden zwischen []

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

Wie ich die Werte von Namen finden können, Telefon, etc. mit PHP, also sollte ich variabel wie diese $name = 'roccos'$phone = '123324324' haben, ich kann entweder tut dies für alle separat oder ist es eine Möglichkeit, automatisch all Variablen automatisch mit Wert zu erhalten ...

Ex: In diesem Text [abc:def] [phone:123456] alles vor dem Doppelpunkt : wird der Variablenname sein und nach dem Doppelpunkt werden sei es Wert =>$abc = 'def'$phone = '123456'

+1

haben Sie JSON-Format angesehen ... ??? oder du bist auf dieses Format beschränkt ???? – Baba

+1

Was hast du bisher versucht? Einführung über Regex finden Sie hier: http://www.regular-expressions.info/ –

+0

Da ich hoffnungslos Reguläre Ausdrücke bin, lehrte ich es wird schwierig sein .., Egal wie sehr ich versuche reguläre Ausdrücke Es ist immer schwierig für ich zu lernen. –

Antwort

3

einfach einen regulären Ausdruck verwenden, und 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. Bitte beachte, dass ich ein Array verwendet, um die Daten zu halten, anstatt sie direkt auf globale Variablen zuweisen; das wäre gefährlich, wenn Sie dies von irgendwelchen Benutzereingaben abhalten würden. Wenn die Daten sicher sind, können Sie diese erweitern extract mit:

extract($data); 
+0

Arbeitete wie ein Charme. Vielen Dank. –