Kleines Problem mit substr()

xtramen01

Erfahrenes Mitglied
Hallo Leute,

ich möchte einen String zerlegen.
Und zwar möchte ich erreichen, das alles was zwischen { } steht in ein array geschrieben wird um die Daten dann weiter zu verarbeiten.
Das versuche ich so:

PHP:
 $array = explode('{', '{dd},{123},{mm},{jj}');

 for($i=0; $i < count($array); $i++)
   {
   echo substr($array[$i],0,-2);
   }


 echo substr($array,0,-2);

Diese Testausgabe müsste eigentlich so aussehen:


Aber so ist die Ausgabe tatsächlich:


Also es fehlt das letzte Zeichen.
Hat jemand eine Idee, oder vielleicht sogar einen anderen...einfacheren Lösungsansatz?

Gruss und Danke!
 
Zitat aus der substr() doku :
Ist length angegeben und negativ, werden genau so viele Zeichen vom Ende von string abgeschnitten (nachdem die Startposition ermittelt wurde, sollte start negativ sein). Gibt start eine Position hinter dem abzuschneidenden Teil an, wird ein leerer String zurückgegeben.

//edit
Sollte das nicht ausreichen:
PHP:
for($i=0; $i < count($array); $i++)
   {
   echo $array[$i];
   }
/* ergibt :
dd},
123},
mm},
jj}
*/
 
Zuletzt bearbeitet:
Auf gut deutsch:
Array durch "," als Trenner bilden, erstes und letztes Zeichen abschnibbeln und fertig ist das Array
 
Zuletzt bearbeitet:
Hi

für sowas würde ich reguläre Ausdrücke benutzen ;)

PHP:
$pattern = "/\{(.*)\},\{(.*)\},\{(.*)\},\{(.*)\}/";
$str = "{dd},{123},{mm},{jj}";
$str = preg_replace($pattern, '\1\2\3\4', $str);
echo $str;
 
Hi

für sowas würde ich reguläre Ausdrücke benutzen ;)

PHP:
$pattern = "/\{(.*)\},\{(.*)\},\{(.*)\},\{(.*)\}/";
$str = "{dd},{123},{mm},{jj}";
$str = preg_replace($pattern, '\1\2\3\4', $str);
echo $str;

oder so(falls nicht bekannt ist, wieviele Fundstellen es geben wird):
Code:
<pre>
<?php
$str = '{dd},{123},{mm},{jj}';
preg_match_all('@\{(\w+)\}@',$str,$array);
//test
print_r(end($array));
?>
</pre>
 
Zurück