preg_match op een slash van een url

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rik Engelen

Rik Engelen

02/11/2013 09:48:39
Quote Anchor link
Beste lezer,

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';

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
if(!preg_match("/aanvraag-plaatsen[^\/]$/", $url1))
{
  echo 'test';    
}
Gewijzigd op 02/11/2013 09:48:57 door Rik Engelen
 
PHP hulp

PHP hulp

24/11/2024 12:08:54
 
Wouter J

Wouter J

02/11/2013 10:12:57
Quote Anchor link
Ik zou niet te moeilijk gaan doen en gewoon gaan kijken of er tussen aanvraag-plaatsen en het eind van de string nog iets zit, zo ja => match! zo nee => continue.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (preg_match('/aanvraag-plaatsen.+$/', $url)) {
    echo 'match!';
}

?>

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
 
Rik Engelen

Rik Engelen

02/11/2013 10:35:13
Quote Anchor link
Bedankt, dit was wat ik zocht. Ook een mooie heldere uitleg.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.