Autor Zpráva
http
Profil
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
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
no super, diky ze se s tim nemusim psat... :)

http
Toto téma je uzamčeno. Odpověď nelze zaslat.

0