Wat is er fout met deze reguliere expressie?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hans Vereyken

Hans Vereyken

10/02/2008 16:05:00
Quote Anchor link
Wat is er fout met deze reguliere expressie?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if (!ereg('[a-zA-Z0-9_\-.]', $string)) {
           echo "De naam van de afbeelding mag enkel bestaan uit letters, cijfers, en streepjes";
        }


?>

De error die ik krijg is dit:
Warning: ereg() [function.ereg]: REG_ERANGE in /xxx.php on line 79

Bedankt
Gewijzigd op 01/01/1970 01:00:00 door Hans Vereyken
 
PHP hulp

PHP hulp

19/04/2024 21:19:51
 
Joren de Wit

Joren de Wit

10/02/2008 16:16:00
Quote Anchor link
Komt waarschijnlijk door de . die alle tekens matched. Bovendien zal dit enkel goed gaan als de bestandsnaam uit 1 teken bestaat.

Dit gaat wel goed:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$string
= 'bestands_naam';
if (!preg_match('/^[a-z0-9_-]+$/is', $string))
{

    echo "De naam van de afbeelding mag enkel bestaan uit letters, cijfers, en streepjes";
}

else
{
    echo 'De naam is OK';
}

?>
 
Hans Vereyken

Hans Vereyken

10/02/2008 16:36:00
Quote Anchor link
nu krijg ik deze foutmelding:

Warning: preg_match() expects parameter 2 to be string, array given in /xxx.php on line 80 ...

Kan het hieraan liggen?:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$string
=$_FILES['afbeelding'];
if (!preg_match('/^[a-z0-9_-]+$/is', $string))
{

    echo "De naam van de afbeelding mag enkel bestaan uit letters, cijfers, en streepjes";
}

else
{
    echo 'De naam is OK';
}
?>
 
Henk PHP

Henk PHP

10/02/2008 16:38:00
Quote Anchor link
Blijkbaar is $_FILES['afbeelding'] geen string...
 
Joren de Wit

Joren de Wit

10/02/2008 16:54:00
Quote Anchor link
Dat is wel zeker. De bestandsnaam is te vinden in $_FILES['afbeelding']['name'], maar deze zal zeker niet door de controle heenkomen.

In de bestandsnaam zal namelijk minimaal 1 . staan voor de extensie, daar loopt je regex nu op stuk. Dan zou je het zo moeten doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (!preg_match('/^[a-z0-9_-\.]+$/is', $string))
?>
 
Hans Vereyken

Hans Vereyken

10/02/2008 17:07:00
Quote Anchor link
Dit krijg ik nu:

Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 11 in /xxx.php on line 84

Dit is de code op de moment:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$hoofdafbeelding_cat_string
=$_FILES["hoofdafbeelding_cat"]["name"];
if (!preg_match('/^[a-z0-9_-\.]+$/is', $hoofdafbeelding_cat_string)){
echo "De naam van de afbeelding mag enkel bestaan uit letters, cijfers, en streepjes";
}

?>
Gewijzigd op 01/01/1970 01:00:00 door Hans Vereyken
 



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.