/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Validering af alm. tekstfelter med ereg();
Fra : Jens Pedersen


Dato : 24-07-01 22:08

Hej NG

Jeg er på min vej ind i PHPs fantastiske verden, som alle andre, stødt ind i
problemer!
Mit problem består i, jeg ikke kan validere et ganske normalt tekstfelt med
ereg();

Variablerne $navn er en variabel posted fra en formular.
(jeg har kigget på webcafe.dk under artikler, hvor dette kodeudsnit står!)

<?php
if(!ereg("[A-z0-9]+", $navn) {
echo "Der er ikke indtastet et navn!"
}
?>

1. Jeg kan ikke forstå intervallet "[A-z0-9]+". Bortset fra jeg kan regne
ud, det går i intervallet A-Z og 0-9, men er det den rigtige måde at
udtrykke intervallerne på?

2. Hvad laver "+"-tegnet midt i det hele?

3. Findes der evt. andre alternativer til ereg();?

Jeg har kigget i manualen på php.net, men med mine PHP-kundskaber pt. siger
syntaks-udtrykkene mig intet.
Men et står mig fast. Jeg har ikke haft held med koden. Hvis nogen kunne
hjælpe, ville det jo være skønt!



 
 
Jonas Delfs (24-07-2001)
Kommentar
Fra : Jonas Delfs


Dato : 24-07-01 22:24

"Jens Pedersen" <jensq@lavasoft.dk> skrev i en meddelelse
news:3b5de3fc$0$4840$edfadb0f@dspool01.news.tele.dk...

> Variablerne $navn er en variabel posted fra en formular.
> (jeg har kigget på webcafe.dk under artikler, hvor dette kodeudsnit står!)
[snip noget kode]

Ser da meget fornuftigt ud.

> 1. Jeg kan ikke forstå intervallet "[A-z0-9]+". Bortset fra jeg kan
regne
> ud, det går i intervallet A-Z og 0-9, men er det den rigtige måde at
> udtrykke intervallerne på?

Det er regulære udtryk (regular expressions også kaldet regex)

> 2. Hvad laver "+"-tegnet midt i det hele?

Sørger for at de karakterer der står mellem [ og ] forekommer mindst én
gang. Altså ikke allesammen - men mindst ét tegn.

> 3. Findes der evt. andre alternativer til ereg();?

Ja. Der er fx. den perl-kompatible preg_match() se http://php.net/preg_match

--
Mvh./Best Regards
Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2



Anders Johannsen (25-07-2001)
Kommentar
Fra : Anders Johannsen


Dato : 25-07-01 00:08

Jonas Delfs wrote in dk.edb.internet.webdesign.serverside.php:
> > 2. Hvad laver "+"-tegnet midt i det hele?
>
> Sørger for at de karakterer der står mellem [ og ] forekommer mindst én
> gang. Altså ikke allesammen - men mindst ét tegn.

Jeg griber lige chancen til at opdrage lidt: Det engelske ord 'character'
oversættes korrekt (og ganske fyldestførende) til tegn. Karakterer er noget man
får i skolen, eller noget et menneske kan være udrustet med.

For kort at vende tilbage til emnet er
http://www.phpbuilder.org/columns/dario19990616.php3 en glimrende introduktion
til emnet for begyndere. Er man mere seriøs, kommer man ikke udenom 'Mastering
Regular Expressions'

Iøvrigt: ereg() er af det onde. Brug altid preg_*()

/A

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagoiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jonas Delfs (25-07-2001)
Kommentar
Fra : Jonas Delfs


Dato : 25-07-01 00:47

"Anders Johannsen" <not@valid.dk> skrev i en meddelelse
news:9jkv3u$sos$1@sunsite.dk...

> > > 2. Hvad laver "+"-tegnet midt i det hele?
> >
> > Sørger for at de karakterer der står mellem [ og ] forekommer mindst én
> > gang. Altså ikke allesammen - men mindst ét tegn.
>
> Jeg griber lige chancen til at opdrage lidt:

Det gør du vel. :)

> Det engelske ord 'character'
> oversættes korrekt (og ganske fyldestførende) til tegn.

Ja

> Karakterer er noget man
> får i skolen, eller noget et menneske kan være udrustet med.

Ja. Jeg beklager meget fejlen.

> For kort at vende tilbage til emnet er
> http://www.phpbuilder.org/columns/dario19990616.php3 en glimrende
introduktion
> til emnet for begyndere.

Jep. Been there.

> Er man mere seriøs, kommer man ikke udenom 'Mastering
> Regular Expressions'

Nej, det er nok rigtigt.

> Iøvrigt: ereg() er af det onde. Brug altid preg_*()

Jeps - foreslog jeg jo også. Jeg har bare ikke fået sat mig ind i de Perl
Kompatible Regulære Udtryk.

--
Mvh./Best Regards
Jonas Delfs, http://delfs.dk
e72bd3e51a7937c87d28b85d677a97b2




Jacob Bunk Nielsen (25-07-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 25-07-01 00:55

Anders Johannsen <not@valid.dk> writes:

> Jeg griber lige chancen til at opdrage lidt: Det engelske ord 'character'
> oversættes korrekt (og ganske fyldestførende) til tegn. Karakterer er noget man
> får i skolen, eller noget et menneske kan være udrustet med.

Hvis det ikke er dem man får under uddannelse, så er man vel højst
udrustet med karakter, som i begrebet karakter, og ikke som i
karakterer i flertal. Jo mindre man lider af personlighedsspaltning.

Men ellers giver jeg dig helt ret.

FUT: dk.snak.off-topic

--
Jacob
By all means, let's not confuse ourselves with the facts!

http://www.bunk.cc - nu med Emacs effekt

Jacob Bunk Nielsen (24-07-2001)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 24-07-01 22:26

"Jens Pedersen" <jensq@lavasoft.dk> writes:

> 1. Jeg kan ikke forstå intervallet "[A-z0-9]+". Bortset fra jeg kan regne
> ud, det går i intervallet A-Z og 0-9, men er det den rigtige måde at
> udtrykke intervallerne på?

Du mener sikkert "[A-Za-z0-9]+", ikke?

> 2. Hvad laver "+"-tegnet midt i det hele?

Det betyder "match det der står foran så mange gange du har lyst, dog
mindst en gang".

> 3. Findes der evt. andre alternativer til ereg();?

Ja, du kan også bruge eregi(), som er caseinsensitiv eller
preg_match().

--
Jacob
The Macintosh - the computer for people with only one working finger.

http://www.bunk.cc - nu med Emacs effekt

Niels Andersen (25-07-2001)
Kommentar
Fra : Niels Andersen


Dato : 25-07-01 05:49

"Jens Pedersen" <jensq@lavasoft.dk> wrote in message
news:3b5de3fc$0$4840$edfadb0f@dspool01.news.tele.dk...
> if(!ereg("[A-z0-9]+", $navn) {
> echo "Der er ikke indtastet et navn!"
> }

Hmm... Hvis du bare vil tjekke at der står NOGET, og ikke om det overholder
en bestemt syntax, så kan du gøre sådan:

if (empty($navn)) {
echo "Der er ikke indtastet et navn!"
}

--
Mvh.

Niels Andersen



Jens Pedersen (25-07-2001)
Kommentar
Fra : Jens Pedersen


Dato : 25-07-01 15:39

"Niels Andersen" <niels-usenet@myplace.dk> skrev i en meddelelse
news:uds77.6297

> Hmm... Hvis du bare vil tjekke at der står NOGET, og ikke om det
overholder
> en bestemt syntax, så kan du gøre sådan:
>
> if (empty($navn)) {
> echo "Der er ikke indtastet et navn!"
> }

Kanon - lige hvad jeg skulle bruge!
Takker

--
Jens Pedersen
ICQ: 124672321




Zoologic2 (me to) (31-07-2001)
Kommentar
Fra : Zoologic2 (me to)


Dato : 31-07-01 20:43

Velvidende at du spørger om php vil jeg nu alligevel spørge:
Validering af formularer sker langt nemmeste og hurtigst vha.
client-side javascript - som tillige også forstår regulære udtryk.

Jeg har hapset følgende:
<HTML>
   <HEAD>
   <TITLE>Regular Expression</TITLE>
   <SCRIPT>
   three=/^[a-z]{3}$/;
   function validate() {
   if (three.test(mainform.TEXT1.value)) tlc='';
   else tlc=' not';
   alert(mainform.TEXT1.value + 'is'+tlc+' exactly three
consecutive lower case letters.');
   }
   </SCRIPT>
   </HEAD>
<BODY>

<FORM NAME="mainform" onsubmit="validate();">
   <INPUT TYPE="TEXT" NAME="TEXT1">
   <INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>

fra: http://www.webdevelopersjournal.com/articles/jscript_forms2.html

Dit egentlige spørgsmål strander lidt på, at du ikke angiver hvorledes
du valideringen? Må der ikke forekommer tal eller skal der (som i
eksemplet overfor) kun forekomme tre karakterer.

Nils

On Tue, 24 Jul 2001 23:08:01 +0200, "Jens Pedersen"
<jensq@lavasoft.dk> wrote:

>Hej NG
>
>Jeg er på min vej ind i PHPs fantastiske verden, som alle andre, stødt ind i
>problemer!
>Mit problem består i, jeg ikke kan validere et ganske normalt tekstfelt med
>ereg();
>
>Variablerne $navn er en variabel posted fra en formular.
>(jeg har kigget på webcafe.dk under artikler, hvor dette kodeudsnit står!)
>
><?php
> if(!ereg("[A-z0-9]+", $navn) {
> echo "Der er ikke indtastet et navn!"
> }
>?>
>
>1. Jeg kan ikke forstå intervallet "[A-z0-9]+". Bortset fra jeg kan regne
>ud, det går i intervallet A-Z og 0-9, men er det den rigtige måde at
>udtrykke intervallerne på?
>
>2. Hvad laver "+"-tegnet midt i det hele?
>
>3. Findes der evt. andre alternativer til ereg();?
>
>Jeg har kigget i manualen på php.net, men med mine PHP-kundskaber pt. siger
>syntaks-udtrykkene mig intet.
>Men et står mig fast. Jeg har ikke haft held med koden. Hvis nogen kunne
>hjælpe, ville det jo være skønt!
>


Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408943
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste