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

| Rubrika Php / mysql

Diskusia k článku

Automatický prevod texu na hyperlinkZobraziť článok

Peto
Dátum a čas 03. 02. 2011, 22:50 E-mail pkrajnak [a] inmail.sk

ok, zaujímavé..., ale ako napríklad spraviť, že mám načítané url z xml, ale potrebujem, aby www bolo nahradené napr. pap...

odkaz: http://www.xyz.sk
by teda vypisalo nasledovne:
http://pap.xyz.sk

Ako sa to da spravit?

Naspäť naspäť

Pridať komentár

Koľko je na ruke prstov?

Náhľad článku

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);
 
}
?>
RSS