|
| preg_match() til at tjekke, om .dk er i en~ Fra : Kim Ludvigsen |
Dato : 23-02-11 17:08 |
|
Jeg skal have tjekket, om .dk er i en streng, og kan forstå,
at jeg kan bruge preg_match(). Men jeg er blank på regex,
nogen der kan hjælpe mig med løsningen?
Jeg skal have tjekket om .dk forekommer i strengen
$problemside, og ellers skal der meldes spam. Altså noget i
stil med:
if (.dk ikke forekommer i $problemside) {
echo "Die spammer, die";
}
else ...
Jeg ved ikke, hvor i strengen .dk forekommer, da der kan
være indtastet en afsluttende \ eller fx side2.html.
--
Mvh. Kim Ludvigsen
Hjælp til computeren og internettet:
http://kimludvigsen.dk
| |
Andreas Andersen (23-02-2011)
| Kommentar Fra : Andreas Andersen |
Dato : 23-02-11 17:37 |
|
Den 23-02-2011 17:08, Kim Ludvigsen skrev:
> Jeg skal have tjekket, om .dk er i en streng, og kan forstå, at jeg kan
> bruge preg_match(). Men jeg er blank på regex, nogen der kan hjælpe mig
> med løsningen?
>
> Jeg skal have tjekket om .dk forekommer i strengen $problemside, og
> ellers skal der meldes spam. Altså noget i stil med:
>
> if (.dk ikke forekommer i $problemside) {
> echo "Die spammer, die";
> }
> else ...
>
> Jeg ved ikke, hvor i strengen .dk forekommer, da der kan være indtastet
> en afsluttende \ eller fx side2.html.
Det behøver du ikke preg_match til. if (!strpos($problemside, ".dk")) {
echo "Die spammer, die"; } burde være nok.
--
Andreas
| |
Bertel Lund Hansen (23-02-2011)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 23-02-11 18:48 |
|
Andreas Andersen skrev:
> Det behøver du ikke preg_match til. if (!strpos($problemside, ".dk")) {
> echo "Die spammer, die"; } burde være nok.
Det virker (tilfældigvis) som ønsket, men du skøjter hen over et
ret drilagtigt forhold: Hvis nu ".dk" havde kunnet findes i
position 0, ville din kode ikke virke.
Når man bruger strpos(), skal man *altid* bruge typestærkt tjek:
if (strpos($problemside, ".dk")===false) { ... }
altså 3 gange =. Det bevirker at 0 og false opfattes som to
forskellige værdier.
Et eksempel kunne være søgning i en liste med gruppenavnene på
usenet:
if (!strpos($groupname, "dk."))
echo "Det er desværre ikke en dansk gruppe!\n"
Det ville svare forkert på alle de danske grupper.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
Kim Ludvigsen (23-02-2011)
| Kommentar Fra : Kim Ludvigsen |
Dato : 23-02-11 19:20 |
| | |
Andreas Andersen (23-02-2011)
| Kommentar Fra : Andreas Andersen |
Dato : 23-02-11 19:28 |
|
Den 23-02-2011 18:47, Bertel Lund Hansen skrev:
> Andreas Andersen skrev:
>
>> Det behøver du ikke preg_match til. if (!strpos($problemside, ".dk")) {
>> echo "Die spammer, die"; } burde være nok.
>
> Det virker (tilfældigvis) som ønsket, men du skøjter hen over et
> ret drilagtigt forhold: Hvis nu ".dk" havde kunnet findes i
> position 0, ville din kode ikke virke.
>
> Når man bruger strpos(), skal man *altid* bruge typestærkt tjek:
>
> if (strpos($problemside, ".dk")===false) { ... }
>
> altså 3 gange =. Det bevirker at 0 og false opfattes som to
> forskellige værdier.
Hov ja, beklager, det var en fejl.
Hvis jeg havde implementeret strpos, havde jeg nok sat den til at
returnere -1, når strengen ikke findes, det tror jeg havde sparet ganske
mange debuggingtimer på verdensplan.
--
Andreas
| |
Bertel Lund Hansen (23-02-2011)
| Kommentar Fra : Bertel Lund Hansen |
Dato : 23-02-11 20:50 |
|
Andreas Andersen skrev:
> Hvis jeg havde implementeret strpos, havde jeg nok sat den til at
> returnere -1, når strengen ikke findes, det tror jeg havde sparet ganske
> mange debuggingtimer på verdensplan.
Python er din ven.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
| |
|
|