Add to Google Reader or Homepage Prihlásiť sa k odberu RSS

| Rubrika Php / mysql

Automatický prevod texu na hyperlink

Pri tvorbe diskusných fór, či kníh hostí sa môže zísť funkcia, ktorá prevedie hyperlinky do klikateľného tvaru. Takéto funkcie spravidla pracujú s regulárnymi výrazmi, princíp je teda veľmi jednoduchý. Samotný zápis regulárnych výrazov je však celkom komplikovaný a žiada si čo-to naštudovať. Ponúkam funkciu, ktorá rieši práve spomínané prevedenie textu na hyperlink.

Zdroj: http://www.totallyphp.co.uk/…perlinks.htm

<?
function makeClickableLinks($text) {
 
  $text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
    '<a href="\\1">\\1</a>', $text);
  $text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)',
    '\\1<a href="http://\\2">\\2</a>', $text);
  $text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})',
    '<a href="mailto:\\1">\\1</a>', $text);
 
return $text;
 
}
 
// Použitie
 
// email
$text = "you@example.com";
echo makeClickableLinks($text);
 
// URL
$text = "http://www.example.com";
echo makeClickableLinks($text);
 
// FTP URL
$text = "ftp://ftp.example.com";
echo makeClickableLinks($text);
 
?>

Ako bonus ponúkam ešte jeden variant. Táto funkcia okrem prevedenia textu na link, skráti pridlhý reťazec na určený počet znakov.

<?
 function makeClickableLinks($text) {
 
     $text = preg_replace('#(http://|ftp://|(www\.))([\w\-]*\.[\w\-\.]*([/?][^\s]*)?)#e',"'<a href=\"'.('\\1'=='www.'?'http://':'\\1').'\\2\\3\">'.((strlen('\\2\\3')>23)?(substr('\\2\\3',0,35).'&hellip;'):'\\2\\3').'</a>'",$text);
 
     return str_replace('&','&',$text);
 
}
?>

Tomáš Mašek

Naspäť naspäť Pridať komentár k článku prispieť do diskusie [1]

Vyhľadávanie

v názvoch článkov v textoch článkov

Pridať komentár

Koľko je na ruke prstov?

RSS