Preg_match expression probleem

Status
Niet open voor verdere reacties.

phobia

Terugkerende gebruiker
Lid geworden
4 sep 2006
Berichten
1.777
Ik probeer een expression te maken
die een naam controleert

okey is
Morphius
Morphius1223
Morphius.inc
Morphius'inc
Morphius inc

maar geen ~!@Z#$%^&*()_+= enz

Nu heb ik dit gemaakt:
PHP:
if(preg_match('/([a-z0-9-\'.\s])+/i' , $_POST['user_name']) )
{
    echo '<br>user_name: '.$_POST['user_name'];
}
else
{
    echo 'user_name NOT valide';
}
Maar als ik achter een naam bv een @ zet, dan keurt hij het toch goed.

Ik krijg het niet juist voor elkaar.
 
Ik probeer een expression te maken
die een naam controleert

okey is
Morphius
Morphius1223
Morphius.inc
Morphius'inc
Morphius inc

maar geen ~!@Z#$%^&*()_+= enz

Nu heb ik dit gemaakt:
PHP:
if(preg_match('/([a-z0-9-\'.\s])+/i' , $_POST['user_name']) )
{
    echo '<br>user_name: '.$_POST['user_name'];
}
else
{
    echo 'user_name NOT valide';
}
Maar als ik achter een naam bv een @ zet, dan keurt hij het toch goed.

Ik krijg het niet juist voor elkaar.

Ik heb verder geen verstand van reguliere expressies, maar je kan ook een andere methode gebruiken:

PHP:
<?php

$string = 'mynickname';

$forbidden = array('@', '!',); // enz

$error = FALSE;

foreach($forbidden as $char) {

	if(str_pos($string, $char) === FALSE) {
	
		$error = TRUE;
		
	}
	
}

if($error == FALSE) {

	echo 'Username is valid';
	
} else {

	echo 'Username is not valid!';
	
}

?>

OF

PHP:
<?php

$string = 'mynickname';

$forbidden = array('@', '!',); // enz

if(str_replace($forbidden, '', $string) == $string) {

	echo 'Username is valid';
	
} else {

	echo 'Username is not valid';
	
}

?>


Het eerste controleert of één van de verboden tekens in de string zit, de ander vervangt alle verboden tekens, en controleert of de string nog steeds gelijk is.
 
Ik probeer een expression te maken
die een naam controleert

okey is
Morphius
Morphius1223
Morphius.inc
Morphius'inc
Morphius inc

maar geen ~!@Z#$%^&*()_+= enz

Nu heb ik dit gemaakt:
PHP:
if(preg_match('/([a-z0-9-\'.\s])+/i' , $_POST['user_name']) )
{
    echo '<br>user_name: '.$_POST['user_name'];
}
else
{
    echo 'user_name NOT valide';
}
Maar als ik achter een naam bv een @ zet, dan keurt hij het toch goed.

Ik krijg het niet juist voor elkaar.

Hetgeen wat volgend script doet is checken of er een ander karakter in de string voorkomt dan letters, cijfers, een spatie een punt(.) of een apostrof (').
Ik weet niet of dat precies is wat je wilt, maar dit werkt denk ik voor jou wel!

PHP:
<?php
		if(preg_match("/[^a-zA-Z 0-9\.\']/", "Morphius.inc")){
			echo ("Incorrect");
		} else {
			echo("Correct");
		}
?>

Gr. Ronald!:)
 
@BlaBla5
Dat is wel een leuke manier, maar dan moet ik alle leestekens en speciale tekens in een array gaan zetten.
Volgens mijn is een expression dan makkelijker(als je weet hoe het werkt)

@RonaldGJ
Mijn bedoeling met de expression is als er iets anders dan a-z A-Z 0-9 . ' - en spatie in de string zit dat de
preg_match false geeft.
Hiermee wil ik voorkomen dat men exotice namen in gaan voeren.
 
@BlaBla5
Dat is wel een leuke manier, maar dan moet ik alle leestekens en speciale tekens in een array gaan zetten.
Volgens mijn is een expression dan makkelijker(als je weet hoe het werkt)

@RonaldGJ
Mijn bedoeling met de expression is als er iets anders dan a-z A-Z 0-9 . ' - en spatie in de string zit dat de
preg_match false geeft.
Hiermee wil ik voorkomen dat men exotice namen in gaan voeren.

Heb je mijn script al geprobeerd dan? Dat is als het goed is precies wat het doet!
Ik zou zeggen, test het eerst even.

Gr. Ronald!:)
 
Ik heb hem geprobeerd, maar morphius.inc@ keurt de expression ook goed.
Maar dat moet fout zijn!

PHP:
if(preg_match("/[^a-zA-Z 0-9\.\']/", 'Morphius.inc@') )
{
    echo '<br>user_name: Morphius.inc@';
}
else
{
    echo 'user_name NOT valide';
}

haha ik handel goed/fout verkeerd af!!

Alleen ondekte ik nog een probleempje, als je een ' verstuur via $_POST, dan word er \' van gemaakt door php.
dus ik heb met str_replace eerst de backslash verwijderd uit de string.

het werk nu prefect

haha maar dat ik het snap!!!! Neu nog zeker niet
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan