Autor | Zpráva | ||
---|---|---|---|
http Profil |
#1 · Zasláno: 6. 1. 2006, 10:49:53
kdyz mam text clanku a napisu do nej www.neco.cz nebo http://www.neco.cz
tak tady se udela krasne link. to musim nejak rozparsovat pomoci nejakych znacek - treba: [url] [/url] a dat do promenne a pak poskladat jako odkaz? nebo mate v PHP nejaky jiny fígl? http |
||
bitbit Profil |
#2 · Zasláno: 6. 1. 2006, 12:17:55 · Upravil/a: bitbit
dela se to pomoci eregi_replace. Proste najdes v dannem prispevku pomoci regularniho vyrazu tvar odkazu a prekodujes to na odkaz.
Tuto fci pouzivam v guestbook co jsem vytvoril function prekodovat_odkaz($text){ $slovo = split("[[:blank:]]+", $text); for ($y = 0; $y < count($slovo); $y++) { if (eregi("^(www\..+\..{2,4}/?.*)", $slovo[$y])) //jedna se odkaz typu www... { $odkaz = eregi_replace("^(www\..+\..{2,4}/?.*)", "<a href=\"http://\\1\" target=\"_blank\">\\1</a> ", $slovo[$y]); } elseif (eregi("^([fh]{1}[t]{1,2}[p]?[s]?://.+\..{2,4}/?.*)", $slovo[$y])) //jedna se odkaz typu http://...,ftp://... nebo https://... { $odkaz = eregi_replace("^([fh]{1}[t]{1,2}[p]?[s]?://.+\..{2,4}/?.*)", "<a href=\"\\1\" target=\"_blank\">\\1</a> ", $slovo[$y]); } elseif (eregi("^(mailto:.+@.+\..{2,4})", $slovo[$y])) { $odkaz = eregi_replace("^(mailto:(.+@.+\..{2,4}))", "<a href=\"\\1\" target=\"_blank\">\\2</a> ", $slovo[$y]); }else { $odkaz = $slovo[$y] . " "; //jedna se o normalni slovo } $zprava .= $odkaz; //spojime vsechny slova opet dohromady } return $zprava; } prekoduje http://neco.neco.neco a taky www.neco.neco a taky mailto:neco@neco.neco Nedavno jsem zjistil, ze v regularnich vyrazech mam chybu (prekoduje to i spatne napsany odkaz, ktery ve skutecnosti nemuze jako odkaz fungovat) a taky je to zbytecne slozity. Ta url se muze kontrolovat jen jednim vyrazem. Chystam se to prepsat, jen jsem se k tomu jste nedostal. Jo a pozna to i ftp:// a https:// |
||
http Profil |
#3 · Zasláno: 6. 1. 2006, 13:06:36
no super, diky ze se s tim nemusim psat... :)
http |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0