Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2002 Teil von Dezember

SELFHTML Forumsarchiv
String zerlegen

Informationsseite
  1. Seite (PHP) String zerlegen von Reto Strub, 31. 12. 2002, 19:16
nach unten

String zerlegen

Die folgende Nachricht zum Thema stammt von: Reto Strub, 31. 12. 2002, 19:16

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

nach obennach unten

String zerlegen

Die folgende Nachricht zum Thema stammt von: fastix, 31. 12. 2002, 19:48

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].";";
}
# alle: Admin;InnovaTec;Strub
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?

nach obennach unten

String zerlegen

Die folgende Nachricht zum Thema stammt von: fastix, 31. 12. 2002, 20:10

... 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

nach obennach unten

String zerlegen

Die folgende Nachricht zum Thema stammt von: Reto Strub, 01. 01. 2003, 01:58

Danke fastix

Du hast meine Erwartungen voll und ganz getroffen.

Ich brauche:

- Den "explode"-Befehl
- Den der die Array's um ein's zurücksetzt.


Danke

Reto


PS: Ich hoffe Ihr seit gut "gerutsch" (Ins neue Jahr natürlich)

nach obennach unten

String zerlegen

Die folgende Nachricht zum Thema stammt von: Reto Strub, 01. 01. 2003, 02:29

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

nach obennach unten

String zerlegen

Die folgende Nachricht zum Thema stammt von: fastix, 01. 01. 2003, 22:51

»»   $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

nach obennach unten

String zerlegen

Die folgende Nachricht zum Thema stammt von: Vinzenz, 31. 12. 2002, 19:51

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

nach obennach unten

String zerlegen

Die folgende Nachricht zum Thema stammt von: Christian Seiler, 31. 12. 2002, 21:23

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


--
Ich wünsche allen frohe Weihnachten!
Ich bitte darum, dass ein Themenbereich (BARRIEREFREIHEIT) eingerichtet wird.

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2002 Teil von Dezember

© 1998-2008 Seite Impressum, Software: Classic Forum