+ en $ en ' en " niet toestaan in string.
Hallo allemaal,
Ik wil de volgende tekens weigeren uit een string:
$
+
'
"
nu heb ik preg_match geprobeerd, maar dan gaat het nie zo goed...
Warning: preg_match() [function.preg-match]: Unknown modifier '+' in /home/paintmarkt/domains/paintballmarkt.nl/public_html/mira/cms/content/album.php on line 150
weet iemand hoe ik dit doe?
Heb nu:
if (preg_match("/$/+", $_POST['albumnaam'])) {
echo '<font color="#FF0000"><b>Albumnaam mag geen $, + of aanhalingstekens bevatten.</b></font><br>';
$SchrijfForm = true;
}
Ik wil de volgende tekens weigeren uit een string:
$
+
'
"
nu heb ik preg_match geprobeerd, maar dan gaat het nie zo goed...
Warning: preg_match() [function.preg-match]: Unknown modifier '+' in /home/paintmarkt/domains/paintballmarkt.nl/public_html/mira/cms/content/album.php on line 150
weet iemand hoe ik dit doe?
Heb nu:
if (preg_match("/$/+", $_POST['albumnaam'])) {
echo '<font color="#FF0000"><b>Albumnaam mag geen $, + of aanhalingstekens bevatten.</b></font><br>';
$SchrijfForm = true;
}
Moet die niet ge-escaped worden? En staat er niets in regex libary?
Geen flauw idee, maar als je goede versie kan geven zou dat mij zeer helpen :)
Waarom zo moeilijk doen?
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
if (str_replace(array('$', '+', "'", '"'), '', $str) !== $str) {
// kwam voor
}[/code]
Maar een betere vraag: waarom wil je dit? Maak een lijst van *wel* toegestane tekens en verwerk dat in een regex.
if (str_replace(array('$', '+', "'", '"'), '', $str) !== $str) {
// kwam voor
}[/code]
Maar een betere vraag: waarom wil je dit? Maak een lijst van *wel* toegestane tekens en verwerk dat in een regex.
Dank je wel Richard :) dat werkt perfect :)
'RichardvV:
Waarom zo moeilijk doen?
*
Maar een betere vraag: waarom wil je dit? Maak een lijst van *wel* toegestane tekens en verwerk dat in een regex.
*
Maar een betere vraag: waarom wil je dit? Maak een lijst van *wel* toegestane tekens en verwerk dat in een regex.
Waarom moeilijk doen?
;)
http://php.net/manual/function.strpbrk.php
Gewijzigd op 01/01/1970 01:00:00 door toby hinloopen
Waarom de naam weigeren?
Vervang direct dan de tekens :)
Vervang direct dan de tekens :)
Wil je het met preg_match doen? Dat kan:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
if (preg_match("/[\+\$'\"]/", $_POST['albumnaam']))
{
echo '<font color="#FF0000"><b>Albumnaam mag geen $, + of aanhalingstekens bevatten.</b></font><br>';
$SchrijfForm = true;
}[/code]
if (preg_match("/[\+\$'\"]/", $_POST['albumnaam']))
{
echo '<font color="#FF0000"><b>Albumnaam mag geen $, + of aanhalingstekens bevatten.</b></font><br>';
$SchrijfForm = true;
}[/code]
'Peter:
Waarom de naam weigeren?
Vervang direct dan de tekens :)
Vervang direct dan de tekens :)
Sure. Iemand vult zijn username in met o.a. die tekens. Vervolgens wordt de ingevulde naam - exclusief de tekens - in de database gemikt zonder de gebruiker er van op de hoogte te stellen. Daarna doet de gebruiker een poging in te loggen en krijgt de melding dat de gebruikersnaam niet bestaat.
Natuurlijk kan je een melding geven dat de tekens gestript zijn en zelfs erbij zetten wat de nieuwe gebruikersnaam is, maar dan is er een redelijke kans dat de gebruiker niet tevreden is met de gestripte versie. Stel bijv. dat een gebruiker als username zijn S veranderde in een $. Deze $ wordt dan gestript en daardoor klopt zijn username niet meer omdat er geen "S" meer in zit.
Gewoon niet toestaan en foutmelding geven is dus veel beter.
edit:
Owke, het gaat hier om een albumnaam, maar ook daarbij gelden mijn argumenten nog.
Gewijzigd op 01/01/1970 01:00:00 door toby hinloopen
'GaMer13:
Wil je het met preg_match doen? Dat kan:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
if (preg_match("/[\+\$'\"]/", $_POST['albumnaam']))
{
echo '<font color="#FF0000"><b>Albumnaam mag geen $, + of aanhalingstekens bevatten.</b></font><br>';
$SchrijfForm = true;
}[/code][/quote]
Zoals blijkbaar niet bekend bij jou hoef je metakarakters nauwelijks te escapen in een character class:
[code]preg_match('{\A[^+$"\']++\z}', $_POST['albumnaam']);[/code]
@toby: ja, klopt, strpbrk kan ook. Er is een heel aantal manieren waarop je dit exact kunt doen. :]
if (preg_match("/[\+\$'\"]/", $_POST['albumnaam']))
{
echo '<font color="#FF0000"><b>Albumnaam mag geen $, + of aanhalingstekens bevatten.</b></font><br>';
$SchrijfForm = true;
}[/code][/quote]
Zoals blijkbaar niet bekend bij jou hoef je metakarakters nauwelijks te escapen in een character class:
[code]preg_match('{\A[^+$"\']++\z}', $_POST['albumnaam']);[/code]
@toby: ja, klopt, strpbrk kan ook. Er is een heel aantal manieren waarop je dit exact kunt doen. :]




