staging.inyokaproject.org

PHP Integer aus String filtern

Status: Ungelöst | Ubuntu-Version: Server 16.04 (Xenial Xerus)
Antworten |

gnude

Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Hallo, ich habe hier mal eine vertrackte PHP Frage und vielleicht kennt ja jemand die Antwort:

Ich habe einen langen String, zb.

djfjj44"..D",[211263,\"211 TT\",0]\n,[844788"\\

und hier geht es um den Bereich:

"211 TT\"

Ich weiss das im Sting die Buchstaben TT vorkommen und brauche die Integer-Zahl davor, ich weiss aber nicht wie viele Ziffern die Zahl hat. Kann ich in PHP den String so gekonnt zerlegen das in diesem Fall der Wert 211 übrig bleibt?

Bearbeitet von sebix:

Bitte verwende in Zukunft Codeblöcke, um die Übersicht im Forum zu verbessern!

sebix Team-Icon

Ehemalige

Anmeldungsdatum:
14. April 2009

Beiträge: 5584

Mit einem regulaeren Ausdruck:

1
2
preg_match("/([0-9]+) TT/", $text, $matches);
print_r($matches);

→

Array
(
    [0] => 211 TT
    [1] => 211
)

gnude

(Themenstarter)
Avatar von gnude

Anmeldungsdatum:
11. Juli 2014

Beiträge: 843

Das Ergebnis ist noch ein leeres Array, aber ich glaub das liegt daran, das der Suchbegriff "TT" öfters vorkommt im String. Kann man das auch so einstellen das man nur das erste Ergebnis für "TT" für die Analyse heranzieht.

Alternativ.... Kann man nicht den String zerschneiden, einmal alles nach "TT" (inklusiv TT) abschneiden und dann alles vor dem letzten " (inkl. dessen) abschneiden. Dann bleibt ja auch die 221 übrig.

Humbi

Anmeldungsdatum:
14. Juni 2014

Beiträge: 76

Wenn du mehrere Vorkommen hast kannst du "preg_match_all" verwenden. Dann musst du aber noch das Array nach den Ergebnissen durchforsten. So z.B.:

1
2
3
4
5
$string='djfjj44"..D",[211263,\"211 TT\",0]\n,[844788"\\djfjj44"..D",[211263,\"212 TT\",0]\n,[844788"\\';
preg_match_all("/([0-9]+) TT/", "$string", $matches);
foreach ($matches[1] as "$match"){
   print_r("$match");
}

gnude schrieb:

Kann man nicht den String zerschneiden, einmal alles nach "TT" (inklusiv TT) abschneiden und dann alles vor dem letzten " (inkl. dessen) abschneiden. Dann bleibt ja auch die 221 übrig.

Das kann man auch, mit explode(), wäre aber aufwändiger. Schau dir mal die Doku von PHP an. Die meisten Befehle sind auf Deutsch erklärt und unter den Beispielen findet man "ähnliche Befehle". Wenn man sich da mal durchklickt lernt man viel.

Gruß

Antworten |