preg_match op een slash van een url
Ik wil een preg_match uitvoeren op een url.
De bedoeling is dat als de url is zoals url1 hij de preg_match niet uitvoert.
Bij url 2&3 mag hij hem wle uitvoeren
$url1 = 'http://www.ietsdoenofferte.nl/aanvraag-plaatsen';
$url2 = 'http://www.ietsdoenofferte.nl/aanvraag-plaatsen/bedrijfsuitje';
$url3 = 'http://www.ietsdoenofferte.nl/aanvraag-plaatsen/bedrijfsuitje-buiten-met-kinderen';
Gewijzigd op 02/11/2013 09:48:57 door Rik Engelen
Tevens wil je een url als /aanvraag-plaatsen/ ook niet matchen? Als dat wel zo is gebruik je iets als: /aanvraag-plaatsen\/?.+$/
Toevoeging op 02/11/2013 10:20:47:
Ook altijd leuk om nou eens te kijken wat jij fout heb gedaan, want -om maar een cliche te gebruiken- van fouten leer je.
/aanvraag-plaatsen[^\/]$/
de aanvraag-plaatsen matched gewoon aanvraag-plaatsen, niks moeilijks.
[^\/] is dan weer wat moeilijker. Die matched als er een teken staat wat geen / is (die je vervolgens ook weer escaped)
$ matched het eind van een string.
Dus jouw regex zal deze strings allemaal matchen: /aanvraag-plaatsena /aanvraag-plaatsen_ /aanvraag-plaatsen\ etc.
Maar strings als /aanvraag-plaatsen zal hij niet matchen, hij moet immers nog een teken dat geen / is matchen.
Tevens zal hij dingen als /aanvraag-plaatsen/bedrijfsuitje niet matchen, want na de / moet het eind van de string komen, er moet niet nog een stuk tekst (bedrijfsuitje) tussen de / en het eind van de string zitten.
Dus als je het op deze manier aan wilt pakken ga je iets gebruiken als:
/aanvraag-plaatsen(?!\/)/
De (?\/) betekend dat de string ervoor (aanvraag-plaatsen dus) niet gevolgd wordt door een /.
Gewijzigd op 02/11/2013 10:23:46 door Wouter J
Bedankt, dit was wat ik zocht. Ook een mooie heldere uitleg.