Avatar billede nwn Nybegynder
10. februar 2008 - 16:27 Der er 32 kommentarer og
2 løsninger

Validering af felter

Hej

Jeg har søgt her på eksperten og på php.net og andre sider, men har ikke fundet det jeg søgte efter.

Jeg skal have valideret nogle felter, og det skal være i php, går udfra man skal bruge ereg. Ikke javascript, da man så kan snyde sig udenom.

Jeg skal bruge følgende:

Validering af felt, må KUN indeholde bogstaverne A-Z, tal og bindestreg. (Bogstaverne må både være små og store)

Validering af andet felt, må KUN indeholde tal, og man må højest indtaste 100.

Håber nogle kan hjælpe mig :(
Avatar billede nielle Nybegynder
10. februar 2008 - 16:42 #1
Sådan?

$felt = $_POST['felt'];

if (preg_match("/^[a-z-]+$/i", $felt) {
    echo "Feltet validere";
} else {
    echo "Feltet validere ikke"
}


$andetFelt = $_POST['andetFelt'];

if (preg_match("/1?\d{1,2}/", $andetFelt) {
    echo "Feltet validere";
} else {
    echo "Feltet validere ikke"
}
Avatar billede nielle Nybegynder
10. februar 2008 - 16:42 #2
echo "Feltet validere ikke"

rettes til:

echo "Feltet validere ikke";
Avatar billede olebole Juniormester
10. februar 2008 - 16:48 #3
<ole>

nielle >> der kan ikke indtastes 100 - hvilket er et krav  ;o)

$s = "oleBole";
$n = "52";

if (preg_match("/^[a-z]+$/i", $s)) print "String OK<br>";

if (preg_match("/^\d+$/i", $n) && $n<=100) print "Number OK<br>";

/mvh
</bole>
Avatar billede nielle Nybegynder
10. februar 2008 - 16:51 #4
Der kan da godt indtastes 100 i andet Felt. Omend at jeg glemte ankrene:

if (preg_match("/$1?\d{1,2}^/", $andetFelt) {
    echo "Feltet validere";
} else {
    echo "Feltet validere ikke"
}
Avatar billede nwn Nybegynder
10. februar 2008 - 16:52 #5
Den første if (preg_match("/^[a-z-]+$/i", $felt) {

Virker vidst ikke helt. Den giver OK til alt, undtagen hvis man kun har indtastet bogstaver, så giver den fejlmeddelse ???
Avatar billede nwn Nybegynder
10. februar 2008 - 16:54 #6
Prøver lige ole boles
Avatar billede nielle Nybegynder
10. februar 2008 - 16:55 #7
Glemte også en parentes:

if (preg_match("/^[a-z-]+$/i", $felt) {

til:

if (preg_match("/^[a-z-]+$/i", $felt)) {
Avatar billede nielle Nybegynder
10. februar 2008 - 16:56 #8
Overså også at der gerne måtte være tal - *suk*:

if (preg_match("/^[a-z0-9-]+$/i", $felt)) {
Avatar billede nwn Nybegynder
10. februar 2008 - 16:58 #9
Kunne heller ikke få oleboles til at virke. Jeg prøver lige dit niele.

Jeg undskylder lige hvis jeg har formuleret mig forkert.

Med det første: feltet må kun indeholde tal, bogstaverne a-z og bindestreg, så mener jeg, at det også er ok, hvis feltet kun indeholder tal, eller kun indeholder bogstaverne a-z osv.
Avatar billede nielle Nybegynder
10. februar 2008 - 16:59 #10
Du har ikke formuleret dig forkert - det er bare os (i hvert fald mig) som sjusker...
Avatar billede nwn Nybegynder
10. februar 2008 - 17:00 #11
Jeg fik første felt til at virke med din sidste post niele. Der skulle bare lige et ! ind i starten (:

Så er det kun næste felt
Avatar billede olebole Juniormester
10. februar 2008 - 17:00 #12
nielle >> Din anden RegExp er stadig forkert  :)
Avatar billede olebole Juniormester
10. februar 2008 - 17:02 #13
- men denne er stadig korrekt:
    if (preg_match("/^\d+$/i", $n) && $n<=100) print "Number OK";  ;o)
Avatar billede nielle Nybegynder
10. februar 2008 - 17:02 #14
Det forstår jeg ikke? Den kan sagtens matche 100.
Avatar billede olebole Juniormester
10. februar 2008 - 17:03 #15
Ja, den vil - efter jeg har rettet alle syntaks fejlene - også acceptere tal op til 199  ;o)

$andetFelt = "129";
if ( preg_match("/^1?\d{1,2}$/", $andetFelt) ) {
    echo "Feltet validere";
} else {
    echo "Feltet validere ikke";
}
Avatar billede nielle Nybegynder
10. februar 2008 - 17:04 #16
10/02-2008 17:00:27 > Hvorfor dog det? Så gør den det modsatte af hvad den skal.
Avatar billede nielle Nybegynder
10. februar 2008 - 17:05 #17
10/02-2008 17:03:58 > Ok, så er jeg med. Troede at du påstod at den ikke matchede 100 og så stirrede jeg mig blind på den påstand. ;^)
Avatar billede nwn Nybegynder
10. februar 2008 - 17:05 #18
Niele -> Det er fordi jeg har sat det til at være omvendt hvis du forstår :P

Tjekker her
Fejl meddelse her

Så skulle der lige et ! ind ved Tjekker her, så den ikke udskriver fejl meddelse hvis det er korrekt det man har indtastet (:
Avatar billede olebole Juniormester
10. februar 2008 - 17:06 #19
nielle >> Du manglede en slutparantes, et semikolon - og så havde du byttet om på '^' og '$'. Det er dog denne del, der er helt gal: 1?\d{1,2}
Avatar billede nwn Nybegynder
10. februar 2008 - 17:09 #20
Ja.. jeg kunne ikke lige få 2'eren til at virke.

Har denne indtil videre:

if (preg_match("/$1?\d{1,2}^/", $felt)) {
Avatar billede nielle Nybegynder
10. februar 2008 - 17:12 #21
nwn> Brug oles nr. 2 i stedet.

olebole> Har som sagt indset det - det var blot din din 10/02-2008 16:48:01 hvor du sagde at den ikke matchede 100 der fik mig helt galt i byen-.
Avatar billede olebole Juniormester
10. februar 2008 - 17:12 #22
;o)
Avatar billede nwn Nybegynder
10. februar 2008 - 17:14 #23
Okay, har lige brugt hans, men den accepterer jo også tal over 100 :P ?

Det må højest være 100...
Avatar billede nielle Nybegynder
10. februar 2008 - 17:15 #24
Hvordan ser din kode da ud?
Avatar billede nwn Nybegynder
10. februar 2008 - 17:16 #25
Er det denne du tænker på if (preg_match("/^\d+$/i", $n) && $n<=100) print "Number OK<br>"; ???

Jeg brugte den hvor han skriver der kan bruges helt op til 199 :P
Avatar billede olebole Juniormester
10. februar 2008 - 17:16 #26
Denne kode:
    if (preg_match("/^\d+$/i", $n) && $n<=100) print "Number OK<br>";

- kan jeg ikke med bedste vilje få til at acceptere tal over 100  =)
Avatar billede nielle Nybegynder
10. februar 2008 - 17:17 #27
Den første er hans egen løsning.

Dem anden sætning handler om min, og hvorfor den er diskvalificeret.
Avatar billede nwn Nybegynder
10. februar 2008 - 17:19 #28
Så virker det sgu (:

Tusind tak for hjælpen begge 2.

Vil i dele de 50 ?
Avatar billede olebole Juniormester
10. februar 2008 - 17:20 #29
Selvtak. Det lyder fint  :)
Avatar billede nwn Nybegynder
10. februar 2008 - 17:20 #30
OK (:

Vil du smide et svar nielle ? :D
Avatar billede nielle Nybegynder
10. februar 2008 - 17:22 #31
Oki :^),

... og så vil jeg også tillade mig at reklamere lidt for en af de artikler jeg har skrevet om regulære udtryk:

http://www.eksperten.dk/artikler/1156
Avatar billede nwn Nybegynder
10. februar 2008 - 17:23 #32
Okay (:

Og endnu en gang tak for hjælpen
Avatar billede olebole Juniormester
10. februar 2008 - 17:33 #33
- og tak for points  ;o)
Avatar billede nielle Nybegynder
11. februar 2008 - 18:45 #34
Tak for point :^)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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