Avatar billede simonhans73 Nybegynder
11. februar 2006 - 15:50 Der er 21 kommentarer og
1 løsning

tillade bestemte bogstaver og tegn

hvilken funktion skal jeg bruge til dette

jeg skal undersøge om et ord kun indholder tilladte bogstsaver og tegn.

hvis det indholder tegn der ikke er tilladt vil jeg gerne have mulighed for at udskifte dem.

f.eks hvis der lavet mellemrum
Avatar billede Slettet bruger
11. februar 2006 - 15:53 #1
Du kan bruge regular expressions.

Eks.: (tillader kun bogstaverne i det danske alfabet (inkl. w) uanset om det er lille eller stort)

<?php

$ord = "Hej med dig!";

if(eregi("^[^a-zæøå]+$", $ord)) {
  print "Den går ikke!";
}

?>
Avatar billede olebole Juniormester
11. februar 2006 - 15:57 #2
<ole>

- og Perl-regExp performer som oftest temmelig meget bedre end POSIX-regExp, så brug hellere:
    http://dk.php.net/manual/da/function.preg-match.php

/mvh
</bole>
Avatar billede gizmo-gizmo Nybegynder
11. februar 2006 - 16:02 #3
Olebole: Er den 1 millisekund hurtigere? ;) ej, men hvor meget kan performance betyde her, med mindre man skal køre den samme kommando i et kæmpe loop.
Avatar billede Slettet bruger
11. februar 2006 - 16:04 #4
ole >> Det var satans som du skal blande dig, hehe. Jeg går ikke udfra simonhans skal køre dette tjek 100 gange i sekundet, og det er nemmere at gå til ereg end preg, hvis man ikke har kendskab til tingene i forvejen.
Avatar billede simonhans73 Nybegynder
11. februar 2006 - 16:13 #5
hvis jeg vil tillade alle bogstaver store og små men ikke æøå og ikke mellemrum og ikke andre tegn hvad blir den så

hvordan skriver man at man ikke vil have mellemrum
Avatar billede Slettet bruger
11. februar 2006 - 16:16 #6
Hvis du KUN vil have alle bogstaver (store og små) og ikke andet, så er det nemmere at tjekke på hvad du vil tillade i stedet for hvad du ikke vil tillade.

Du kan bruge dette:

<?php

$ord = "Hej med dig!";

if(eregi("^[^a-z]+$", $ord)) {
  print "Den går ikke!";
}

?>
Avatar billede olebole Juniormester
11. februar 2006 - 16:28 #7
Der kan være ret dramatiske forskelle, hvorfor php.net gang på gang understreger det under POSIX-funktionerne - og i stedet anbefaler brugen af Perl-expressions  :)
Avatar billede olebole Juniormester
11. februar 2006 - 16:36 #8
- og det er ikke så meget spørgsmålet om, hvad det betyder i dette enkelte eksempel. PHP'ere skriver _meget_ ofte elendig performende kode, hvilket tydeligt mærkes på mange webhoteller, hvor mange dårlige koder kører samtidigt under mange domæner.

Hvor ofte ses f.eks. ikke '*' i MySQL-kald - på trods af, det yderst sjældent er alle felter, der er brug for?
Hvor ofte ses ikke uindekserede MySQL-tabeller?
Hvor ofte ses ikke, at 'LIMIT 1' bliver udeladt i update- og select-kald til MySQL-databaser - når koderen ved, der kun skal hentes én række, eller kun én bruger skal have sin profil opdateret?

Altsammen noget, der er med til at gøre mange webhoteller voldsomt meget hårdere belastet end nødvendigt. Kun, hvis man tænker over, hvordan hver eneste linje performer, kan man skrive velfungerende applikationer, der ikke gør livet surt for en selv, ens brugere - og ikke mindst andre på webhotellet og deres brugere.

Kun, hvis man tænker over, hvordan hver eneste linje performer, kan man tillade sig at kalde sig en seriøs koder  :)
Avatar billede simonhans73 Nybegynder
11. februar 2006 - 16:36 #9
jeg kan ikke få den til at virke

Du kan bruge dette:

<?php

$ord = "Hej med dig!";

if(eregi("^[^a-z]+$", $ord)) {
  print "Den går ikke!";
}

?>

ligegyldigt hvad jeg sætter $ord lig med sætter den aldrig fejlmeddelsen ind


jeg har brug en funktion der godkender or uden mellemrum og uden mærkelige tegn
altså godkender a-z og faktisk ikke andet end a-z
Avatar billede Slettet bruger
11. februar 2006 - 16:39 #10
olebole >> Sund og fornuftig argumentation. Jeg bøjer mig i støvet.

simonhans >> Det er fordi jeg er et fjols. :)

Brug dette i stedet:

eregi("[^a-z]+", $ord);
Avatar billede Slettet bruger
11. februar 2006 - 16:42 #11
Eller så endnu bedre:

<?php

if(preg_match('([^a-z]+)', $ord)) {
  print "Den går ikke!";
}

?>
Avatar billede olebole Juniormester
11. februar 2006 - 16:50 #12
- yups ... og så har det samtidig den fordel, at samme syntaks bruges under JavaScript, så man undgår at skulle huske to forskellige syntakser  =)
Avatar billede simonhans73 Nybegynder
11. februar 2006 - 16:52 #13
den sidste dur ikke da den ikke tillader store bogstaver. Kan den laves så den også tillader A-Z og nu vi er igang også 0-9


:-)  tak
Avatar billede Slettet bruger
11. februar 2006 - 17:03 #14
ole >> endnu et godt argument.

simon >> preg_match('/([^a-z]+)/i', $ord)
Avatar billede simonhans73 Nybegynder
11. februar 2006 - 17:20 #15
ja nu er vi ved at være der
I kan få points
Avatar billede simonhans73 Nybegynder
11. februar 2006 - 17:21 #16
hvad skal jeg skrive hvis jeg også vil tillade 0-9
Avatar billede Slettet bruger
11. februar 2006 - 17:24 #17
Så tilføjer du også bare 0-9 til dit pattern.

preg_match('/([^a-z0-9]+)/i', $ord)
Avatar billede simonhans73 Nybegynder
11. februar 2006 - 17:24 #18
preg_match('/([^a-z0-9]+)/i', $ord)

det er vist sådan
Avatar billede simonhans73 Nybegynder
11. februar 2006 - 17:25 #19
ok tak skal i ha
så der points
Avatar billede johan.o Nybegynder
11. februar 2006 - 17:25 #20
he he..mon ikke preg_match('/([^a-z0-9]+/i', $ord) :)

Ved godt der ikke er point i den for mig :)

Mvh. Johan
Avatar billede johan.o Nybegynder
11. februar 2006 - 17:27 #21
Arh, okay i var stadig meget aktive....en over næsen til mig selv og ud af spørgsmålet jeg trækker mig :)

Mvh. Johan
Avatar billede Slettet bruger
11. februar 2006 - 17:39 #22
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

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