3 Stimmen

Aufteilung von Name und ID

Ich habe eine Zeichenfolge

"JonSmith02-11-1955"

Ich benutze preg_split um JonSmith zu erhalten (reg='[0-9-]'), dann wiederholen Sie den Vorgang ('[a-zA-Z]\ '), um sein Geburtsdatum zu erhalten. Gibt es eine bessere Möglichkeit, beide Daten in einem Split zu erhalten?

4voto

Felix Kling Punkte 751464
/(?<=[a-z])(?=\d)/i

funktioniert in diesem Fall. Er entspricht einer Position, der ein Buchstabe vorangestellt ist und auf die eine Ziffer folgt. Lesen Sie über Rückblicke und Vorausblicke für weitere Informationen.

Dies funktioniert nicht, wenn der Name Ziffern enthalten kann.

DEMO

2voto

penartur Punkte 9674

Was ist mit ^(.*)(\d{2})\-(\d{2})\-(\d{4})$ ? Es zerlegt die Zeichenkette in vier Teile: JonSmith , 02 , 11 y 1955 .

1voto

Patrick Desjardins Punkte 130529
^([a-zA-z]*)([0-9]*)\-(.+)*$

Für dieses Beispiel:

JonSmith02-11-1955

Geben :

JonSmith
02
11-1955

enter image description here

1voto

phatskat Punkte 1755

Essayez /(\w*)(\d{2}-\d{2}-\d{4})/ als Ihre Regex - jemand anderes kann das wahrscheinlich effizienter machen. Damit erhalten Sie zwei Erfassungsgruppen, also

$array = preg_match_all('/(\w*)(\d{2}-\d{2}-\d{4})/', "JonSmith02-11-1955");
print_r($array); 
/*
Array
(
    [0] => Array
        (
            [0] => JonSmith02-11-1955
        )

    [1] => Array
        (
            [0] => JonSmith
        )

    [2] => Array
        (
            [0] => 02-11-1955
        )

)

*/

0voto

DaveRandom Punkte 85940
preg_match('/([a-z]+)([0-9-]+)/i', 'JonSmith02-11-1955', $matches);
echo "Name is $matches[1]<br>\n";
echo "Birth date is $matches[2]<br>\n";

Sehen, wie es funktioniert

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X