String zerlegen
Reto Strub
- php
0 fastix0 fastix0 Reto Strub0 Reto Strub0 fastix
0 Vinzenz0 Christian Seiler
Hallo zusammen
Ich habe folgendes Problem:
Ich habe immer den gleichen String und möchte den in Variabeln verlegen:
String: "InnovaTec: Admin InnovaTec Strub" (Der stammt aus eriner .htgroups Datei)
Ich habe folgendes versucht:
ereg ("(.*)(:)(.*)( )(.*)( )(.*)($)", $zeile, $solve_var);
Das funktioniert jedoch nicht!
Danke im Voraus und einen Guten Rutsch
Reto
Mit explode() zerlegt man eine Zeichenkette (string) anhand eines vordefinierten
Trennzeichens (separator).
$String= "InnovaTec: Admin InnovaTec Strub";
$Feld = explode(" ",$string);
führt zu:
$Feld[0] = InnovaTec:
$Feld[1] = Admin
$Feld[2] = InnovaTec
$Feld[3] = Strub
weiter:
$Gruppenname=str_replace(":","",$array[0])
#erstetzt den ":" durch "Nichts"
$user="";
for ($i=1, $i<count($array), $i++) {
$user=$user.$array[$i].";";
}
oder:
$user=array();
for ($i=1; $i<count($array); $i++) {
$user[$i-1]=$array[$i];
}
führt zu:
$user[0] = Admin;
$Feld[1] = InnovaTec
$Feld[2] = Strub
Welches Schweinchen hätten sie gern?
... Da habe ich glatt $array durch $Feld ersetzen wollen um für weniger Konfusion zu sorgen und mich dann selbst durcheinander gebracht---
$String= "InnovaTec: Admin InnovaTec Strub";
$Feld = explode(" ",$String);
führt zu:
$Feld[0] = InnovaTec:
$Feld[1] = Admin
$Feld[2] = InnovaTec
$Feld[3] = Strub
weiter:
$Gruppenname=str_replace(":","",$Feld[0])
#erstetzt den ":" durch "Nichts"
$User="";
for ($i=1, $i<count($Feld), $i++) {
$User=$User.$Feld[$i].";";
}
# $user= "Admin;InnovaTec;Strub;"
# das geht aber besser sie implode();
oder:
$user=array();
for ($i=1; $i<count($Feld); $i++) {
$user[$i-1]=$Feld[$i];
}
#führt zu:
#$user[0] = Admin;
#$user[1] = InnovaTec
#$user[2] = Strub
So, jetzt das mit dem Implode nochmal:
$Benutzer=implode(";",$user);
#führt zu:
#$Benutzer= "Admin;InnovaTec;Strub"
fastix
Danke fastix
Du hast meine Erwartungen voll und ganz getroffen.
Ich brauche:
Danke
Reto
PS: Ich hoffe Ihr seit gut "gerutsch" (Ins neue Jahr natürlich)
Nun habe ich ein weiteres Problem:
Da ich mehrere Dieser Zeilen habe, möchte ich die alle în eine Variable einpacken.
Ich hab folgendes probiert:
$Feld[1] = "Admin";
$Feld[2] = "Supervisor";
$Feld[3] = "Reto";
$Feld[4] = "Strub";
for ($x=1; $x<count($Feld); $x++)
{
$user[$i][$x]=$Feld[$x];
echo("$user[$i][$x] = $user[$i][$x]<BR>\n");
}
Als Antwort auf echo, bekomme ich: "Array[1]" Warum?
MfG Reto
$Feld[1] = "Admin";
$Feld[2] = "Supervisor";
$Feld[3] = "Reto";
$Feld[4] = "Strub";for ($x=1; $x<count($Feld); $x++)
{
$user[$i][$x]=$Feld[$x];
echo("$user[$i][$x] = $user[$i][$x]<BR>\n");
}Als Antwort auf echo, bekomme ich: "Array[1]" Warum?
Versuchs mal mit:
echo("$user($i)($x) = ".$user[0][$x]."<BR>\n");
Dann klappt das auch :) und mit:
for ($x=1; $x<count($Feld)+1; $x++)
werden es vier Werte :)
fastix
Hallo Reto
Ich habe immer den gleichen String und möchte den in Variabeln verlegen:
String: "InnovaTec: Admin InnovaTec Strub" (Der stammt aus eriner .htgroups Datei)
ereg ("(.*)(:)(.*)( )(.*)( )(.*)($)", $zeile, $solve_var);
Also Du willst die Werte InnovaTec (ohne Doppelpunkt), Admin, InnovaTec Strub?
Außerdem gilt, daß hinter dem ersten Wort ein Doppelpunkt steht?
Wenn ich das richtig verstanden habe, dann mache doch folgendes:
Trenne den String per explode() http://www.php.net/manual/de/function.explode.php und entferne vom ersten Eintrag das letzte Zeichen, z.B. mit str_replace() http://www.php.net/manual/de/function.str-replace.php
Gruss und einen guten Rutsch,
Vinzenz
Hallo Reto,
String: "InnovaTec: Admin InnovaTec Strub" (Der stammt aus eriner .htgroups Datei)
ereg ("(.*)(:)(.*)( )(.*)( )(.*)($)", $zeile, $solve_var);
Der Ansatz ist nicht ganz korrekt. Der .*-Ausdruck ist "gierig", er frisst immer das Maximum. Du musst in "ungreedy", also "nicht gierig" machen. Entweder, Du verwendest ".*?", was lahm ist, oder Du verwendest eine invertierte Zeichenklasse:
preg_match, ('/^([^:]*):\s*([^\s]*)\s*([^\s]*)\s*(.*)$/', $zeile, $solve_var);
$solve_var[0]: "InnovaTec: Admin InnovaTec Strub"
$solve_var[1]: "InnovaTec"
$solve_var[2]: "Admin"
$solve_var[3]: "InnovaTec"
$solve_var[4]: "Strub"
(sofern der Ausdruck erfüllt wird)
Grüße,
Christian