Tema: HTMLArea
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/10/2007, 10:03
Avatar de Seppo
Seppo
 
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: HTMLArea

En general, eso se hace con expresiones regulares.

Un ejemplo de cómo lo podés hacer

Código PHP:

<?php
/**
   NAME        : autolink()
   VERSION     : 1.0
   AUTHOR      : J de Silva
   DESCRIPTION : returns VOID; handles converting
                 URLs into clickable links off a string.
   TYPE        : functions
   ======================================*/

function autolink( &$text$target='_blank'$nofollow=true )
{
  
// grab anything that looks like a URL...
  
$urls  =  _autolink_find_URLS$text );
  if( !empty(
$urls) ) // i.e. there were some URLS found in the text
  
{
    
array_walk$urls'_autolink_create_html_tags', array('target'=>$target'nofollow'=>$nofollow) );
    
$text  =  strtr$text$urls );
  }
}

function 
_autolink_find_URLS$text )
{
  
// build the patterns
  
$scheme         =       '(http:\/\/|https:\/\/)';
  
$www            =       'www\.';
  
$ip             =       '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
  
$subdomain      =       '[-a-z0-9_]+\.';
  
$name           =       '[a-z][-a-z0-9]+\.';
  
$tld            =       '[a-z]+(\.[a-z]{2,2})?';
  
$the_rest       =       '\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1}';            
  
$pattern        =       "$scheme?(?(1)($ip|($subdomain)?$name$tld)|($www$name$tld))$the_rest";
    
  
$pattern        =       '/'.$pattern.'/is';
  
$c              =       preg_match_all$pattern$text$m );
  unset( 
$text$scheme$www$ip$subdomain$name$tld$the_rest$pattern );
  if( 
$c )
  {
    return( 
array_flip($m[0]) );
  }
  return( array() );
}

function 
_autolink_create_html_tags( &$value$key$other=null )
{
  
$target $nofollow null;
  if( 
is_array($other) )
  {
    
$target      =  ( $other['target']   ? " target=\"$other[target]\"" null );
    
// see: http://www.google.com/googleblog/2005/01/preventing-comment-spam.html
    
$nofollow    =  ( $other['nofollow'] ? ' rel="nofollow"'            null );     
  }
  
$value "<a href=\"$key\"$target$nofollow>$key</a>";


?>