[php]ereg met [, ], { en }

Pagina: 1
Acties:

  • Speedener
  • Registratie: September 2000
  • Laatst online: 14-09 14:30
ik heb nu in een script het volgende
PHP:
1
2
3
<?
elseif(!ereg("^[_A-Za-z0-9 ]{4,50}$", $name))
?>

dus het de $name mag gewone letters, spaties en _ bevatten maar nu wil ik ook dat een naam []{ en } mag bevatten.

hoe doe ik dat.

jah ik heb al gezocht, ook op php.net maar daar kwam ik er niet uit of kon het niet vinden.

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22:18

TheDane

1.618


  • Speedener
  • Registratie: September 2000
  • Laatst online: 14-09 14:30
Op woensdag 06 februari 2002 16:39 schreef TheDane het volgende:
[wilde gok]
escapen ?
[/wilde gok]
leg eens uit.


\\[ \] \{ \} heb ik natuur lijk al geprobeerd

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22:18

TheDane

1.618

erg goede link hierboven

  • Speedener
  • Registratie: September 2000
  • Laatst online: 14-09 14:30
Op woensdag 06 februari 2002 16:39 schreef TheDane het volgende:
[wilde gok]
escapen ?
[/wilde gok]

[iets minder wilde gok]
In order to be taken literally, you must escape the characters "^.[$()|*+?{\" with a backslash ('\'), as they have special meaning.
[/iets minder wilde gok]
jah die had ik ook gevonden maar die begreep ik niet

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
\\[] en \{} dus :)

Verwijderd

PHP:
1
2
3
<?
elseif(!ereg("^[_A-Za-z0-9 \\\[\\]\\{\\}]{4,50}$", $name))
?>

  • Speedener
  • Registratie: September 2000
  • Laatst online: 14-09 14:30
Op woensdag 06 februari 2002 16:45 schreef Zef het volgende:
PHP:
1
2
3
<?
elseif(!ereg("^[_A-Za-z0-9 \\\[\\]\\{\\}]{4,50}$", $name))
?>
ah fenx, moet dubbel dus :?

mm werkt ook niet...

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 22:18

TheDane

1.618

escape je die [ en { en ] en } binnen de [ .. ] ?

ow,. antwoord staat er volgens mij al ;)

[edit]
of toch niet

  • Speedener
  • Registratie: September 2000
  • Laatst online: 14-09 14:30
Op woensdag 06 februari 2002 16:46 schreef TheDane het volgende:
escape je die [ en { en ] en } binnen de [ .. ] ?


ow,. antwoord staat er volgens mij al ;)

[edit]
of toch niet
heb het binnen en buiten geprobeerd werkt allebei niet..

  • tomato
  • Registratie: November 1999
  • Niet online
code:
1
'^[_A-Za-z0-9 \\[\]{}]{4,50}$'

Werkt dit echt niet :?

  • Speedener
  • Registratie: September 2000
  • Laatst online: 14-09 14:30
Op woensdag 06 februari 2002 17:10 schreef tomato het volgende:
code:
1
'^[_A-Za-z0-9 \\[\]{}]{4,50}$'

Werkt dit echt niet :?
noop

  • tomato
  • Registratie: November 1999
  • Niet online
Op woensdag 06 februari 2002 17:10 schreef tomato het volgende:
code:
1
'^[_A-Za-z0-9 \\[\]{}]{4,50}$'

Werkt dit echt niet :?
Zo werkt ie wel (character class delemiters mogen in PHP's POSIX regexen blijkbaar niet escaped worden):
code:
1
^[][_A-Za-z0-9 {}]{4,50}$

Of in een PCRE werkt dit gewoon:
code:
1
/^[_A-Za-z0-9 \\[\]{}]{4,50}$/

  • Speedener
  • Registratie: September 2000
  • Laatst online: 14-09 14:30
Op woensdag 06 februari 2002 17:22 schreef tomato het volgende:

[..]

Zo werkt ie wel (character class delemiters mogen in PHP's POSIX regexen blijkbaar niet escaped worden):
code:
1
^[][_A-Za-z0-9 {}]{4,50}$

Of in een PCRE werkt dit gewoon:
code:
1
/^[_A-Za-z0-9 \\[\]{}]{4,50}$/
je bent een engel ik heb de bovenste genomen

  • tomato
  • Registratie: November 1999
  • Niet online
De gedachte hierachter is natuurlijk dat een lege character class onzin is, dus een afsluitende ] direct achter een openende [ wordt als inhoud van de character class beschouwd. Dit soort dingen komt in sommige regex variaties op meer plaatsen voor.

Kijk bijvoorbeeld naar een character class met een range van 0 tot en met 9 (die dus ieder cijfer matcht):
code:
1
[0-9]

De - is hier een metacharacter (heeft een 'speciale' betekenis). Maar wat als je letterlijk een - in je character class wilt opnemen? Zelfde gedachte als voorgaande geldt hier ook in veel regex implementaties:
code:
1
[-0-9]

Een - direct aan het begin van een character class kan geen range aangeven, dus wordt hij als letterlijk gezien (geloof dat je hem ook achteraan kunt zetten soms).

[edit] Dit was dus gratis off-topic informatie :P

Verwijderd

Op woensdag 06 februari 2002 17:42 schreef tomato het volgende:
[edit] Dit was dus gratis off-topic informatie :P
Stellen we erg op prijs :*
Pagina: 1