2016-04-27 13 views
-2

Ich habe String, dass seine Ausgangsergebnis aussehen könnte:PHP Regex Zahlen von Zeichenfolge vor angegebenen Zeichen

First : 14:15 
Second: 14:2 
Third: 10:2 
Fourht: 1:20 
Fifth: 1:5 

Ich habe regex, die nur erste von oben und dritten Beispiel entspricht:

/(^[0-9]{2})/ 

Wenn eine Ausgabe wie 1:10 oder 1: 2 erfolgt, gibt es keine Ausgabe (Fehler).

Gewünschtes Ergebnis:

14 
14 
10 
1 
1 

Kann ich es mit preg_replace tun() oder einem anderen? Muss ich auch meine Regex ändern? Wenn ja, welche Regex sollte ich verwenden, um Zahlen vor dem Zeichen ":" zu finden?

Danke für Infos und Hilfe!

+2

Warum nicht einfach explodieren auf ':' und wählen Sie das zweite Element aus dem resultierenden Array? 'explode (':', 'First: 14: 15') [1]'? –

+2

Warte, sieht deine Eingabe wie '14: 15' usw. aus? Dann "explode", wirklich. Wenn bekannt ist, dass die Zeichenfolgen nur Ziffern enthalten, die durch ein ':' getrennt sind, ist dies der einzig beste Weg. –

Antwort

2

Zum Re-State, Regex ist nicht das richtige Werkzeug für diesen Job.

$output = explode(":",$input)[0]; 
+0

Es funktioniert mit Ihrer Antwort :) – Fritex

+1

Aber ich glaube, Regex könnte auch in Ordnung sein https://3v4l.org/bkRj3 – Shafizadeh

+0

Auch Ihr Ansatz funktioniert nicht https://3v4l.org/Qm3ft – Shafizadeh

0

Es funktioniert!

preg_match_all('(^(.*):)', $string, $matches); 
echo $matches[1][0]; // output is right! 14, 14, 10, 1, 1 

https://regex101.com/r/aZ5uQ6/1

Dank für Ideen!

+1

Wenn Ihre Zeichenfolge mehr als 1 ':' enthält, funktioniert das nicht. –

+1

Regex ist NICHT das richtige Werkzeug für diesen Job. –

+0

Hm ... das werde ich mir merken! Derzeit enthält es nicht mehr als eins. Vielen Dank! – Fritex

Verwandte Themen