+ en $ en ' en " niet toestaan in string.
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 :)
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 schreef op 01.02.2010 20:04:
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
Vervang direct dan de tekens :)
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 schreef op 02.02.2010 21:39:
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 schreef op 02.02.2010 21:51:
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. :]