2016-08-03 20 views
0

Meine Anforderung ist, einige meiner URLs, die eine 8-stellige Nummer und ein Sonderzeichen am Ende enthält, umleiten.Umleiten der Url-Muster endet mit Sonderzeichen und Nummer

Beispiel URLs sind unten

www.example.com/anything-here/hello-12345677

www.example.com/anything-here/again-here/again-hello-12543598

gegebenen

www.example.com/anything-here/hello-12345677

ich verwende pregmatch in pHP, die Muster zu finden, mit "-" und 8-stellige Zahl.

Ich habe den folgenden Code versucht und es funktioniert nicht für mich. Ist mein Muster korrekt?

$result = preg_match("#.*/-\d{8}$#i", request_uri()); 
+0

Was ist das Sonderzeichen? Ich sehe nur Zahlen. – chris85

+0

HI Chris "-" ist das Sonderzeichen gefolgt von achtstelligen Zahlen. ZB: "-12345678" – Vishnu

+1

Oh, könnte das '' und ein Sonderzeichen am Ende'' Sie haben kein/in Ihren URLs. Deshalb bekommst du keine Übereinstimmungen. Z.B. '- \ d {8} $' würde ausreichen für '-' dann 8 Zahlen am Ende der Zeichenfolge. – chris85

Antwort

2

Das folgende Muster entspricht jeder URL mit einem Gedankenstrich gefolgt von 8 Ziffern am Ende. URLs mit einem Sonderzeichen am Ende würden nicht übereinstimmen.

$result = preg_match("/.*-\d{8}$/i", request_uri()); 

Demo hier:

Regex101

+0

Die '. *' Und 'i' werden nicht wirklich benötigt. – chris85

+0

HI Tim, das funktioniert nicht für mich. – Vishnu

+0

@ Vishnu Welche Sonderzeichen möchten Sie am Ende anpassen? –

1

Das Problem mit dem regulären Ausdruck Sie verwenden, ist, dass Sie das Muster für den Bindestrich und acht Ziffern direkt nach dem Schrägstrich setzen, und in allen Beispielen Sie zeigte, gibt es andere Zeichen zwischen der Schrägstrich und der Strich.

//         ***** <---These chars don't match your pattern 
$url = "www.example.com/anything-here/hello-12345677"; 
//     .*   / -\d{8} $ 

Wenn Sie dort sicherstellen möchten, ist ein Schrägstrich in der URL vor dem -\d{8}, können Sie einen anderen Platzhalter hinzufügen, bevor es (.*/.*-\d{8}$), oder wenn es nicht, dann ist egal weder den Schrägstrich noch die Wildcard sind erforderlich. (-\d{8}$).