[PHP] preg_match werkt niet zoals verwacht

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
Ik ben bezig met een klein stukje PHP code om de controleren of een string (met maar een karakter er in), een bepaald type is. In dit geval probeer ik te kijken of de string een nummer of een punt, of comma bevat

Ik heb een probleempje met preg_match. Als ik onderstaande code uitvoer:

PHP:
1
2
$char = "2";
$int= preg_match("[0-9/.,]",$char);

Ik zou verwachten dat $int 1 zou zijn, want de 2 is onderdeel van 0-9. Maar ik krijg telkens 0 terug. Als ik echter het volgende doe:

PHP:
1
2
$char = "2";
$int= preg_match("[2]",$char);


Krijg ik wel netjes een 1 als antwoord. Ik heb weinig ervaring met Regular expressions, en ik vermoed dat ik ergens een simpele denkfout maak, maar wat doe ik verkeerd?
GlowMouse schreef op zondag 21 januari 2007 @ 20:48:
Je kunt [ php ]-tags gebruiken voor PHP-code
Thanx

[ Voor 11% gewijzigd door SnowDude op 21-01-2007 21:22 . Reden: typo ]

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Patronen beginnen met en eindigen op een /. Omdat je ook al een / middenin je patroon hebt staan moet je die escapen met een \. Je krijgt dan
PHP:
1
$int = preg_match("/[0-9\\/.,]/",$char);

Je kunt [ php ]-tags gebruiken voor PHP-code

[ Voor 28% gewijzigd door GlowMouse op 21-01-2007 20:49 ]


Acties:
  • 0 Henk 'm!

Verwijderd

GlowMouse schreef op zondag 21 januari 2007 @ 20:48:
Patronen beginnen met en eindigen op een /. Omdat je ook al een / middenin je patroon hebt staan moet je die escapen met een \. Je krijgt dan
PHP:
1
$int = preg_match("/[0-9\\/.,]/",$char);

Je kunt [ php ]-tags gebruiken voor PHP-code
Die / mag ook elk ander teken zijn. Soms kun je beter bijvoorbeeld ~ of # als delimiters gebruiken. Zie de manual over PCRE expressies.

Acties:
  • 0 Henk 'm!

  • SnowDude
  • Registratie: Januari 2002
  • Laatst online: 13-09 18:52
Jullie worden bedankt! Mijn functie werkt nu in iedergeval naar behoren. _/-\o_

Begrijp ik nu goed dat de delimiters van het regex patroon PHP eigen zijn? Want bij een hoop voorbeelden voor regex zie ik die niet staan.

[ Voor 3% gewijzigd door SnowDude op 21-01-2007 20:56 ]

All electric components run on smoke. If you let the smoke out, they won't work anymore.


Acties:
  • 0 Henk 'm!

Verwijderd

SnowDude schreef op zondag 21 januari 2007 @ 20:56:
Jullie worden bedankt! Mijn functie werkt nu in iedergeval naar behoren. _/-\o_

Begrijp ik nu goed dat de delimiters van het regex patroon PHP eigen zijn? Want bij een hoop voorbeelden voor regex zie ik die niet staan.
Niet geheel. Bij Perl compatible expressies heb je meestal delimiters, en meestal is dat de slash (/), Maar vaak kun je ook zelf bepalen welke delimiters gebruik moeten worden, bijvoorbeeld in PHP, maar ook in de command line tool "sed".