php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
preg_match


 
Sebastian.J
08-12-2005, 18:12 
 
Abend,

Irgednwie ist preg_match nicht so mein Fall.... Nur am Lesen und kommt danach nix mehr bei rum


Folgendes


if(preg_match("/^(http:\/\/)\b/",$_POST['avatarurl'])){
echo "Ist drin";
}


Diese Abfrage sagt mir ob http:// drin steht und dahinter noch etwas.... Jetzt möchte ich

1 Teil: Schauen ob http:// drin steht /^(http:\/\/)
2 Teil: danach ob www oder nichts drin steht ?
und ein text muss immer dahinter stehen \b

Sebastian

 
Abraxax
08-12-2005, 18:39 
 
was genau soll den erfüllt sein, um in dein if() zu springen?

 
Sebastian.J
08-12-2005, 18:46 
 
Also ich hab ein Formularfeld... Meine Abfrage soll zugreifen wenn in dem Feld steht

*irgendetwas

http://*
http://www.*

Sonst soll übersprungen werden


Hab es jetzt auch hiermit versucht


if(preg_match("/^(http:\/\/ | http:\/\/www.)./",$_POST['avatarurl'])){


Allerdings greift er ja immer ab wenn was nach http:// steht


THX

 
Abraxax
08-12-2005, 18:48 
 
probier mal ...



#^http://(www\.)?.+#isU

 
Sebastian.J
08-12-2005, 18:53 
 
hmm versteh ich zwar nicht aber dann gibt er mir trotzdem die ausgabe wenn dort http://www. steht


Also nochmal

(wenn http:// dort steht und kein www. und danach Text) oder (nur ein http://www. und nach Text)

THX

 
Benny-one
08-12-2005, 19:14 
 
preg_match('/^(http:\/\/|http:\/\/www\.)[a-z0-9-]{1,}$/is', $t);

so?

http:// << nein
http://www. nein

http://lala << ja
http://www.lala << ja

 
Sebastian.J
08-12-2005, 19:18 
 
Original geschrieben von Benny-one
preg_match('/^(http:\/\/|http:\/\/www\.)[a-zA-Z0-9-]{1,}$/is', $t);

so?

http:// << nein
http://www. nein

http://lala << ja
http://www.lala << ja

Mom aber das

(http:\/\/|http:\/\/www\.)

bei dir heit doch entweder http:// oder http://www.

also kommt es doch wieder aufs gleiche raus?

 
Benny-one
08-12-2005, 19:21 
 
nö, denn nach http:// oder http://www. muss ein Text kommen, der entweder aus Buchstaben (a-z) besteht oder aus zahlen 0-9 oder - enthält. tests mal, ob dir das so passt. wenn noch / erlaubt sein soll, muss das noch bei die [ ] rein. allerdings ist damit immernoch nicht gewährleistet, ob die URL korrekt ist. es ist nämlich auch folgendes möglich http://www.-asd << und das kannst du ja nicht wollen oder?

 
Sebastian.J
08-12-2005, 19:27 
 
Genau super geht so


if(preg_match("/^(http:\/\/|http:\/\/www\.)[a-zA-Z0-9-]{1,}$/is", $_POST['avatarurl'])){
echo "geht";
}


Denke das reicht vorerst so, das Prüfen hat momentan noch keinen Vorrang...

Noch ne Frage wozu ist

$/is

 
Benny-one
08-12-2005, 19:30 
 
http://www.php-resource.de/tutorials/read/10/1/ ;) da stehts

mach bei dem RegEx mal das A-Z raus (aber lass a-z drinnen), das ist nämlich überflüssig, da der i modifier das ausschaltet.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:52 Uhr.