Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 10-09-2006, 16:54
nougad
 Newbie
Links : Onlinestatus : nougad ist offline
Registriert seit: Sep 2006
Beiträge: 9
nougad ist zur Zeit noch ein unbeschriebenes Blatt
nougad eine Nachricht über ICQ schicken
Standard preg_match_all gibt nicht alle Ergebnisse zurück

Ich würde gerne aus einem String alle Befehle auslesen, die folgerndermaßen aufgbaut sind:

{var[:wert[:wert[etc...]]]}

also ein Ausdruck beginnend mit { dann ein wort und dann eine unbestimmte Anzahl von Werten. Das Ende ist wieder mit } gekennzeichnet. (Beispiel siehe $string).

Der Code soll das dann auslesen und in einem Array speichern, das folgerndermaßen aufgabaut sein sollte (bzw. so ähnlich):

Code:
array(3) {
  [0]=>
  array(3) {
    [0]=>
    string(29) "{var:wert1:wert2:wert3:wert4}"
    [1]=>
    string(3) "var"
    [2]=>
    string(5) "wert1"
    [3]=>
    string(6) "wert2"
    [4]=>
    string(6) "wert3"
    [5]=>
    string(6) "wert4"
  }
  [1]=>
  array(3) {
    [0]=>
    string(20) "{var2:wert21:wert22}"
    [1]=>
    string(4) "var2"
    [2]=>
    string(6) "wert21"
    [2]=>
    string(6) "wert22"
  }
  [2]=>
  array(2) {
    [0]=>
    string(5) "{var}"
    [1]=>
    string(3) "var"
  }
}
Das Script:
PHP-Code:
<?php
$string 
"asdf{var:wert1:wert2:wert3:wert4}asdfasdf{var2:wert21:wert22}sdfsdf{var}";
$suchmuster '/{(\w*)(:(\w*))*}/';
preg_match_all($suchmuster,$string,$fundstellen,PREG_SET_ORDER);
var_dump($fundstellen);
?>
momentan bekomme ich aber nur diese Ausgabe:

Code:
array(3) {
  [0]=>
  array(3) {
    [0]=>
    string(29) "{var:wert1:wert2:wert3:wert4}"
    [1]=>
    string(3) "var"
    [2]=>
    string(6) ":wert4"
  }
  [1]=>
  array(3) {
    [0]=>
    string(20) "{var2:wert21:wert22}"
    [1]=>
    string(4) "var2"
    [2]=>
    string(7) ":wert22"
  }
  [2]=>
  array(2) {
    [0]=>
    string(5) "{var}"
    [1]=>
    string(3) "var"
  }
}
Was muss ich ändern?
Danke
nougad
Mit Zitat antworten