string zerlegen
Fini
- php
Moin,
sitze zurzeit an einen Problem und zwar möchte ich einen String zerlegen.
Bsp:
$i = "Ahg123hGnd325"
Jetzt möchte ich für jeden Einzelnen Buchstaben etwas machen (was ist egal), wichtig ist aber, dass ich mit dem wert von dem Buchstaben arbeiten kann. Zusätzlich sollen die Zahlen aber ganz bleiben.
Bsp:
$i = "Ahg123hGnd325"
for each buchstabe in $i
switch ($i)
case(a)
echo "Hallo Welt"
break
case(b)
...
for each Number
$j = $j + Zahl //in dem fall einmal halt +123 und einmal +325
ich hoffe, dass das irgendwie lösbar ist.
danke schonmal.
hi,
for each buchstabe in $i
vermutlich möchtest Du den String ersteinmal in eine Liste umsetzen.
Hotti
Hi!
for each buchstabe in $i
vermutlich möchtest Du den String ersteinmal in eine Liste umsetzen.
In PHP gibt es keine Listen, nur Arrays. Auf einzelne Zeichen eines Strings lässt sich aber wie auf ein Array zugreifen. Bleibt das Problem der Zahlen, die ja aus mehreren Zeichen bestehen. In dem Fall muss man sammeln. Etwas so:
Iterieren über die Zeichen des Strings
Wenn Ziffer und kein Zahlenmodus, dann
Zahlenmodus beginnen
Zahl anlegen mit der aktuellen Ziffer
nächster Schleifendurchlauf
Wenn Ziffer und Zahlenmodus, dann
aktuelle Ziffer an Zahl anhängen
nächster Schleifendurchlauf
Wenn Buchstabe und Zahlenmodus, dann
Zahlenmodus beenden
mit Zahl was machen
Buchstabe auswerten
Wenn nach Ablauf der Schleife der Zahlenmodus aktiv ist, dann endete die Zeichenfolge mit einer Ziffer. In dem Fall muss die gesammelte Zahl noch ausgewertet werden.
Lo!
Hi,
eine erste Idee wäre folgendes:
$i="dein String";
for($k=0;$k<strlen($i);$k++) {
machWasMit( $i{$k} );
}
bye trunx
Hello,
sitze zurzeit an einen Problem und zwar möchte ich einen String zerlegen.
Bsp:
$i = "Ahg123hGnd325"
Jetzt möchte ich für jeden Einzelnen Buchstaben etwas machen (was ist egal), wichtig ist aber, dass ich mit dem wert von dem Buchstaben arbeiten kann. Zusätzlich sollen die Zahlen aber ganz bleiben.
Bsp:
$i = "Ahg123hGnd325"
for each buchstabe in $i
switch ($i)
case(a)
echo "Hallo Welt"
break
case(b)
...for each Number
$j = $j + Zahl //in dem fall einmal halt +123 und einmal +325
Ersteinmal solltest Du festlegen, ob es sich um einen "String" handelt, oder um eine Byte-Sammlung, also ein Byte-Array. Da PHP und speziell das Webumfeld inzwischen fast immer auch mit UTF-8 zu tun hat, könnten die Zeichenrepräsentationen des Strings nämlich auch mehrere Bytes für ihre Codierung benötigen.
Daher sollte Schritt 1 also ein, festzustellen, ob eine Multibyte-Codierung oder eine Singlebyte-Codierung Verwendung findet.
Mit den Stringfunktionen
http://de.php.net/manual/en/ref.strings.php
http://de.php.net/manual/en/ref.mbstring.php
speziell den Substring-Funktionen daraus, lassen sich dann einzelne Zeichen abtrennen. Diese Zeichen kannst Du dann daraufhin untersuchen, ob sie numerische oder literale Repräsentanzen sind.
Besonders kompliziert wird das dann durch Sonderzeichen, wie + und -, oder auch Klammern, die einzeln als Literale und in Verbindung mit direkt nachfolgenden Nummernzeichen dann ggf. ebenfalls als numerische Zeichen gelten müssen / ihnen zugeordnet werden müssen.
Das Ganze wird sich wohl am bequemsten mit einer Regualr Expression erledigen lassen.
http://de.php.net/manual/en/ref.pcre.php
Du wirst also nicht drum herumkommen, eine genauere Festlegung der Rahmenbedinungen vorzunehmen, bevor die Lösung der Aufgabe sinnvoll möglich ist.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi!
ich hoffe, dass das irgendwie lösbar ist.
Hast doch quasi die Loesung. Du musst nur noch eine Variable fuer Zahlen einfuehren und immer wenn Dein Buchstabe eigentlich eine Zahl ist, daraus einen Zahlenstring basteln, der sobald der Buchstabe wieder eine Buchstabe ist, in eine Zahl umgewandelt wird.