Fred Furunkelstein: PHP Variable auseinander nehmen

Beitrag lesen

Nur leider bekomm ich jetzt zwar ne ausgabe aber leider nur 1ne.

Zeig uns bitte den Code mit Suchmuster, den Text und Dein Ergebnis. Hast Du mehrere Fundstellen, so verwende preg_match_all.

Dann hast Du das Problem mit der angesprochenen "Gierigkeit"

Beispiel:

<?php  
$str='ABBBBABBBBABBBBA';  
$muster='/A(.*?)A/';  
if (preg_match_all ( $muster, $str, $treffer )) {  
   array_shift($treffer);  
   foreach ($treffer as $ar) {  
       foreach ($ar as $s) {  
           print $s."<br />\n";  
       }  
   }  
}  
?>

liefert:
~> php test9.php
BBBBABBBBABBBB<br />

<?php  
$str='ABBBBABBBBABBBBA';  
$muster='/A(.*?)A/';  
if (preg_match_all ( $muster, $str, $treffer )) {  
   array_shift($treffer);  
   foreach ($treffer as $ar) {  
       foreach ($ar as $s) {  
           print $s."<br />\n";  
       }  
   }  
}  
?>

liefert:
~> php test9.php
BBBB<br />
BBBB<br />

Der Unterschied ist das Fragezeichen nach dem Stern, der für eine "beliebige Anzahl des Zeichens davor" steht. Der Punkt steht für "beliebiges Zeichen". Das Fragezeichen zwingt die Funktion beim ersten Fund zu stoppen, das Ergebnis für die Rückgabe im Array zu speichern und dann ab dieser Stelle weiter zu suchen. Deshalb findet diese alle Vorkommen des geklammerten Teiles.

Ohne das Fragezeichen sucht die Funktion bis zum letzten Vorkommen eines A und gibt alles dazwischen als das eine Ergebnis zurück.

Fred