[php] Reguliere expressie ] toevoegen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
Hallo allen,

In een reguliere expressie om een domeinnaam te checken op hoofdletters spaties etc wil ik ook mee kunnen nemen dat de haken [ en ] mogen bestaan. Dit om een array in een GET te versturen. De haak [ lukt prima om in de reg expressie toe te voegen maar bij de ] gaat het steeds mis.

Iemand enig idee?
Dit is de expressie

PHP:
1
2
3
4
function valid_url ($querystring)
    {
        return (ereg ('^[0-9a-z\?&=/\-\[]+$',$querystring));
    }

Acties:
  • 0 Henk 'm!

  • TheMe
  • Registratie: December 2006
  • Laatst online: 08-07 20:51
Zonder enige poging te doen je inhoudelijk te helpen: ereg is deprecated vanaf 5.3.0

http://nl.php.net/manual/en/function.ereg.php

There is no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • Joshua
  • Registratie: Juli 2005
  • Laatst online: 16-09 15:47
code:
1
^[0-9a-z\?&=/\-\[\]]+$

Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
Die laatste ] toevoegen werkt dus niet...

Acties:
  • 0 Henk 'm!

  • Avalaxy
  • Registratie: Juni 2006
  • Laatst online: 17:20
[ en ] geven een reeks tekens aan die je string mag bevatten (of juist niet), door ] te doen sluit je die reeks af. Daarom moet je hem escapen door er een backslash voor te zetten, dan pakt hij het als een normaal karakter ipv een regexteken.

Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
Die backslash ervoor plaatsen werkt bij de ] op de een of andere manier niet. Dus dacht al dat t aan mij lag.

Acties:
  • 0 Henk 'm!

  • gertjuhh
  • Registratie: April 2004
  • Laatst online: 26-04 09:14
Even los van de regex, ben je niet hier naar op zoek?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
twisted2000 schreef op dinsdag 13 december 2011 @ 12:51:
In een reguliere expressie om een domeinnaam te checken op hoofdletters spaties etc wil ik ook mee kunnen nemen dat de haken [ en ] mogen bestaan. Dit om een array in een GET te versturen.
Dat is dus geen domeinnaam. B)

En je zoekt inderdaad iets dat al standaard moet bestaan, je bent niet de eerste die een url wilt checken. Bovendien is jouw regex veel en veel te simpel: je staat al die karakters overal toe, terwijl er andere restricties gelden voor de verschillende onderdelen van een url/uri.

{signature}


Acties:
  • 0 Henk 'm!

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
Het gaat ook niet om de domeinnaam maar het pad wat erachter komt. Dat mag uitsluitend kleine letters geen spaties etc bevatten en anders doe ik hem redirecten naar een url

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Begin eerst eens met netjes Perl compatible regular expressions (PCRE) te gebruiken en dus de ereg-functies vervangt door preg. Zoals hierboven al gezegd wordt is POSIX deprecated vanaf PHP 5.3 en werden ze bovendien zelfs voor die tijd al afgeraden omdat ze afwijken van bekende standaarden.

Daarna kun je nogmaals proberen om je regular expression op te bouwen met een \ om de ] te escapen. Als het dán nog steeds niet werkt, dan kun je nogmaals zeggen dat het niet werkt, gecombineerd met je meest recente aanroep van preg_match. ;)
gertjuhh schreef op dinsdag 13 december 2011 @ 13:01:
Even los van de regex, ben je niet hier naar op zoek?
Note:

Numbers +0 and -0 are not valid integers but validate as floats.
offtopic:
Say what? 8)7

[ Voor 25% gewijzigd door NMe op 13-12-2011 13:37 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1