Autor Zpráva
Herm
Profil
Ahoj, mám menčí problém s regulérním výrazem

preg_match("/((http:\/\/)|(www\.)).+(\.[a-z]{1,6})/", $lastsit, $match);


funguje dobře, ikdyž asi nebude fungovat vše, ale potřebuji udělat aby počítal s tuto adresou

http://www.google.cz/url?sa=t&source=web&ct=res&cd=3&ved=0CAsQFjAC&url=http%3A%2F%2Fwww.seznam.cz


tady je problém že je to vícekrát .cz a ja to potřebuji předělal na

http://www.google.cz


v podstatě potřebuji vždycky jen kořen adresy.
Děkuji za pomoc, regulérni výrazy mi nějak moc nejdou
AM_
Profil
v jakém tvaru dostáváš regulár na vstupu? je před ním vždycky protokol (http:// nebo jiný)?
pak:
preg_match('~://([a-z\.-]+)~i', $str, $matches) ti vyhodí v $matches[1] jméno domény.
Herm
Profil
AM:

jj diky to je ono, mno bylo to
http://www.google.cz/url?sa=t&source=web&ct=res&cd=3&ved=0CA4QFjAC&url=http%3A%2F%2Fwww.seznam.cz%2F&rct=j&q=seznam&ei=7vTbS4mQGJOgONGP1IgH&usg=AFQjCNE5h8uq8J8vh6UE0X_yrA3U_vmzJA


a vystup pak

http://www.google.cz/url?sa=t&source=web&ct=res&cd=3&ved=0CAsQFjAC&url=http%3A%2F%2Fwww.seznam.cz


jo http tam bylo vždycky, ale ten tvuj funguje dobře.. diky:)
Herm
Profil
Herm:
ikdyž ješte neni tak dobrý, vystup je toto s tím tvým regulérním výrazem

//www.google.cz

nedá tam http: a ale jen ty lomítka

ale funguje to takto

~http://([a-z\.-]+)~i
AM_
Profil
výstup by měl být jen www.google.cz, a je v $matches[1] a ne $matches[0]. Co když někdo zadá https adresu? pokud chceš matchovat i protokol, udělej to takhle:
preg_match('~[a-z0-9]+://[a-z0-9\.-]+~i', $str, $matches)

ještě tam každopádně musí být 0-9, na to jsem pozapomněl. takhle to bude v $matches[0] i s protokolem

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: