Avatar billede ducks Nybegynder
21. januar 2006 - 21:54 Der er 14 kommentarer og
1 løsning

Kontrollér for "ulovlige" tegn

Hvordan skal en function, der kontrollerer at der kun brugt tilladte tegn i en string, se ud?

De tilladte er A-Z a-z 0-9 " " "-" og "_"


Og så lige et lille bitte ekstra spørgsmål, som ikke har noget med sagen ovenover at gøre:
Hvordan kan det være at forkortelsen for Hypertext Preprocessor er PHP? Jeg kan ikke se sammenhængen :-(
Avatar billede nielle Nybegynder
21. januar 2006 - 22:06 #1
if (preg_match("/[^A-Za-z0-9 _-]/i", $tekst))
    echo("Et ulovligt tegn!");
else
    echo("Vi er glade :^)");
Avatar billede hmortensen Nybegynder
21. januar 2006 - 22:15 #2
PHP stod originalt for Personal Home Page.
Avatar billede cronaldo Nybegynder
21. januar 2006 - 22:16 #3
Der er da vist en fejl, Nielle ?

if (preg_match("/[^A-Za-z0-9 _-]/i", $tekst)){
    echo("Et ulovligt tegn!");
} else {
    echo("Vi er glade :^)");
}

- Du havde da glemt et par tuborg'er ? Men det kan jo være du er afholdsmand, så er du undskyldt ;)
Avatar billede hmortensen Nybegynder
21. januar 2006 - 22:18 #4
Klammer er kun nødvendige hvis udtrykket gælder for flere linier, gælder også for løkker.
Avatar billede ducks Nybegynder
21. januar 2006 - 22:19 #5
Der er et lille problem, det kan godt være det bare er mig, men når $tekst indeholder # så er det som om den laver rod i det?
Avatar billede ducks Nybegynder
21. januar 2006 - 22:21 #6
Det er fordi den skipper alt efter # (ser det ud som om)
Avatar billede nielle Nybegynder
21. januar 2006 - 22:47 #7
Kan du give et eksempel?
Avatar billede ducks Nybegynder
21. januar 2006 - 22:51 #8
Lidt forenklet:

<div id="test"></div>

<input type="button" onclick="...('test').innerHTML='Searching...'; * og sender videre til en iframe der skal svare om brugernavnet er taget og om der er ugyldige tegn i *" />

Hvis $tekst = "dpk #" og altså # indgår, så går den i stå på Searching... og det gør den ikke med alle mulige andre tegn.

if (preg_match("/[^A-Za-z0-9 _-]/i", $tekst))
    echo("Et ulovligt tegn!");
else
    echo("Vi er glade :^)");
Avatar billede nielle Nybegynder
21. januar 2006 - 23:00 #9
Jeg er ikke sikker på at jeg forstår din problembeskrivelse, men sådan noget som:

$tekst = "dpk #";
if (preg_match("/[^A-Za-z0-9 _-]/i", $tekst))
    echo("Et ulovligt tegn!");
else
    echo("Vi er glade :^)");

- skulle da gerne give "Et ulovligt tegn!" - og dette burde i øvrigt ikke afhænge af hvad der står efter #-tegnet idet dette jo i sig selv er et af de ulovlige tegn.
Avatar billede ducks Nybegynder
21. januar 2006 - 23:03 #10
Det er som om at den udkommenterer alt efter # (inkl. #)
Avatar billede ducks Nybegynder
21. januar 2006 - 23:03 #11
Ohh... det er sikkert min fejl, for det bliver sendt videre i en $_GET det skal jeg vel tage højde for på en eller anden måde?
Avatar billede nielle Nybegynder
21. januar 2006 - 23:39 #12
Tegnet # har en speciel funktion i et url - det bruges til at koppe til et anchor-punkt længere nede på den side der angives i url'et.

Hvis at du ikke ønsker at # behandles på den måde skal du urlencode det:

http://dk2.php.net/urlencode
Avatar billede ducks Nybegynder
22. januar 2006 - 01:35 #13
Den laver alligevel rod med tegnet #
Avatar billede ducks Nybegynder
22. januar 2006 - 01:37 #14
Nej det var min fejl, smider i et svar?
Avatar billede nielle Nybegynder
22. januar 2006 - 09:06 #15
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester