Frage zu regexp

mathiu

Erfahrenes Mitglied
Ich versuche einen regulären Ausdruck zu erstellen, der mir aus einer Zeichenkette die Zahlen rausholt. Dabei kann ich davon ausgehen, dass nur eine Zahl (natürlich teilweise mit mehreren ZIffern hintereinander) vorhanden ist.

Mein Versuch sah so aus (neben anderen ebenfalls erfolglosen Versuchen):

PHP:
$descvalue = preg_replace("/.*([0-9]+).*/","\\1",$desc[2]);

Dieser Code holt leider nur jeweils EINE Ziffer aus dem String heraus.

Bei
$desc[2] = "Teststringblabal2234tatata"

krieg ich
$descvalue = "4"

Vielleicht kann mir ja jemand dabei weiterhelfen.
 
Wie wäre es ganz einfach damit?

PHP:
$descvalue = ereg_replace("[0-9]?", "", $desk[2]); //entferne alle Zahlen aus dem string $desk[2]

Schau auch maal hier
Da wird die ganze Problematik mit regulären Ausdrücken ziemlich gut erklärt.

Gruß

RedWing
 
dein script löst meine Problematik nicht, hab mich vielleicht auch ein wenig unklar ausgedrückt..

Ich will die Zahlen nicht loswerden, sondern ich brauche sie zur weiteren Verarbeitung, wie ich es in meinem Script auch versuche.

Den Link werd ich mir mal ansehen.
 
Und wie wäre es noch damit:
PHP:
$descvalue = ereg_replace("[". chr(0) . "-/|:-~]?", "", $desk[2]); //entferne alle Zeichen die keine Zahlen sind aus dem string $desk[2]

Allerdings kann ich nicht versprechen ob das mit dem chr(0) funktioniert, da ich
keine Möglichkeit hab das jetzt zu testen...

Gruß

RedWing
 
dann krieg ich das und gar keine Ausgabe mehr.

Code:
Warning: ereg_replace(): REG_EBRACK in /home/virtual/site11/fst/var/www/html/project/d2db_import.php on line 110


Ausserdem muss es doch eine Lösung geben mit dem regexp alle Zahlen zu bekommen und nicht umgekehrt alles andere zu löschen. Ist natürlich auch eine Möglichkeit, aber meines Erachtens eine weniger sichere.
 
Hi Mathiu,

also hab jetzt folgendes Code Stück, welches aber leider die Char mit den Nummern
0- 31 im Ascii Zeichen Code nicht mit berücksichtigt:
PHP:
      1 <?
      2         $desk = "123sdfsk293";
      3         $descvalue = ereg_replace("[!-/|:-~| ]?", "", $desk);
      4         echo $descvalue;
      5 ?>
(Wichtig ist das Leerzeichen hinter dem letzten | damit der Space mt enfernt wird.

Vielleicht hat ja jemand für die ersten 31 Sonderzeichen im Ascii Code noch jemand
Vorschläge, das würde mich auch intressieren?

Gruß

RedWing
 
Zurück