PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Bestimmte Zeichen aus einem String lesen (http://www.selfphp.de/forum/showthread.php?t=26146)

Doc_McSky 21.02.2019 14:38:14

Bestimmte Zeichen aus einem String lesen
 
Hallo liebe Leute,

ich weiß das ich hier auch schnell Schelte bekomme, aber die regulären Ausdrücke sind so wenig mein Ding, das ich Bauchschmerzen habe, bevor es klappt.
Da frage ich doch lieber nach dem korrekten Ausdruck, den Ihr mir hier bestimmt aus dem Eff-Eff sagen könnt.

Folgende Stringmöglichkeiten:
- "...das ist/nurein|Test:12345;der.abergar/nicht so/schlecht-ist"

In diesen Strings gibt es nur EINEN Doppelpunkt. Die Zahl hinter dem Doppelpunkt brauche ich, ich weiß aber nicht wie lang diese ist und mit welchem Zeichen es danach weitergeht. Ich brauche die Zahl nach dem Doppelpunkt, der Rest ist egal.

Das ist bestimmt einfach, oder? -_-

Herzlichst bedankt schon im Voraus.

vt1816 21.02.2019 15:19:56

AW: Bestimmte Zeichen aus einem String lesen
 
Dann lass es uns zusammen versuchen.
Wie sehen Deine Bemühungen bis jetzt aus?

Doc_McSky 21.02.2019 17:40:11

AW: Bestimmte Zeichen aus einem String lesen
 
Haha, neee, das willst du nicht wissen. :(

Ok, ich lerne gerne, aber ganz erhlich?
Ich habe es mit strpos() und substr() versucht danach zu suchen und Teilstrings zu extrahieren, bitte nicht schimpfen. Deshalb habe ich den regulären Ausdruck noch gar nicht versucht, aber ich verstehe, ich soll ja lernen.

Ok, mein Spezialgebiet RegEx:
Ist ja nicht das erstemal, also leite ich mal ab von anderen Ausdrücken, die ich habe:
"/^[0-9]{3,}$/"

Kann das so in etwa richtig sein? Wehe nicht. Also er soll nach reinen Zahlen suchen, mindestens drei Stellen, ansonsten beliebig. Aber das mit den Slashes und ^und $ kapiere ich nicht ganz, steht aber fast überall drin. :-|
Und man sollte ihm sagen das die Zahl erst nach einem Doppelpunkt kommt, sonst findet er noch eine andere, aber wo kommt das hin? Einfach zwischen ^ und der eckigen Klanmer?

Doc_McSky 13.03.2019 12:28:03

AW: Bestimmte Zeichen aus einem String lesen
 
Hmh, kann mir denn da niemand mit meinem Problem weiterhelfen?
Ist der reguläre Ausdruck schwerer als erwartet dafür?
Also mit meinem Lösungsansatz da oben bringt es nichts, der funzt gar nicht... :(

Vielleicht kann ja doch wer helfen, Danke. ;)

sysop 14.03.2019 15:50:39

AW: Bestimmte Zeichen aus einem String lesen
 
Quick$Dirty

PHP-Code:

$string '...das ist/nurein|Test:12345;der.abergar/nicht so/schlecht-ist';
$teile explode(':',$string);
$pieces explode(';'$teile[1]);

echo 
$pieces[0]; 

Vorausgesetzt, der Aufbau ist immer so.

oder
PHP-Code:

$string '...das ist/nurein|Test:12345;der.abergar/nicht so/schlecht-ist';
preg_match('/(\d+)/',$string$array);
print_r($array); 

Dann wird nur die Zahl extrahiert,vorausgesetzt, es sind sonst keine Zahlen enthalten.

sind mehrere Zahlen enthalten:
PHP-Code:

$string '...das ist/nurein|Test:12345;der.abergar/nicht so/i7777schlecht-ist';
preg_match_all('!\d+!'$string$result);
print_r($result); 


Doc_McSky 19.03.2019 12:44:10

AW: Bestimmte Zeichen aus einem String lesen
 
Hallo,

danke dir sysop für deine Hilfe.
Ähnliche Idee hatte ich auch, aber leider ist es wohl nicht so einfach.
Das mit explode() geht schlecht, der Doppelpunkt steht zwar fest, aber nicht was auch immer hinter der dann folgenden Zahl kommt.

Die anderen Ausdrücke holen sich zwar auch die gewünschte Zahl, aber wie du schon vermutet hattest, es können auch an anderen Stellen Zahlen auftauchen und so wüsste ich ja nicht, an welcher Stelle im result-Array nun MEINE Zahl steht.

Ich habe es jetzt so probiert:
PHP-Code:

preg_match("/:[0-9]{3,}/"$string$matches

Ich weiß das die Zahl mind. 3-stellig ist und danach irgendwas kommt.

Einziger unschöner Nebeneffekt, den Doppelpunkt gibt er mir mit als Ergebnis aus, aber das kann ich mit substr() abschneiden. Nur ist das dann die sauberste Lösung?
gibt es keinen regulären Ausdruck, der in einem String einen Doppelpunkt sucht und nur die Zahl dahinter ausgibt, bis ein nicht-Zahl-Zeichen kommt?


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:01:16 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.