Foros del Web » Programando para Internet » PHP »

Expresiones regulares

Estas en el tema de Expresiones regulares en el foro de PHP en Foros del Web. Hola yo tengo el siguiente ejemplo de expresiones regulares Código PHP: function  url ( $text ){           $text  =  html_entity_decode ( $text );           $text  ...
  #1 (permalink)  
Antiguo 06/10/2011, 19:23
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 9 años, 9 meses
Puntos: 18
Expresiones regulares

Hola yo tengo el siguiente ejemplo de expresiones regulares
Código PHP:
function url($text){ 
        
$text html_entity_decode($text); 
        
$text " ".$text
        
$text eregi_replace('(((f|ht){1}tp://)[[email protected]:%_+.~#?&//=]+)'
                
'<a href="\1">\1</a>'$text); 
        
$text eregi_replace('(((f|ht){1}tps://)[[email protected]:%_+.~#?&//=]+)'
                
'<a href="\1">\1</a>'$text); 
        
$text eregi_replace('([[:space:]()[{}])(www.[[email protected]:%_+.~#?&//=]+)'
        
'\1<a href="http://\2">\2</a>'$text); 
        
$text eregi_replace('([_.0-9a-z-][email protected]([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})'
        
        
'<a href="mailto:\1">\1</a>'$text); 
        return 
$text

el lo que hace es que si detecta una URL la pone como un link...pero yo quisiera saber como modificarla..para que cuando me detecte la url vea si al final aparece
.jpg .png o cualquier otro formato de imagen!

para en vez de colocar <a href coloque <img src= entienden? o sea para colocar imagenes...como se haria? gracias
  #2 (permalink)  
Antiguo 06/10/2011, 19:25
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 9 años, 10 meses
Puntos: 793
Respuesta: Expresiones regulares

eregi_replace es obsoleta

Cita:
Esta función ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.
Lee este aporte:

http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 06/10/2011, 19:31
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 9 años, 9 meses
Puntos: 18
Respuesta: Expresiones regulares

OMG :O como? nahhhh! y ahora? como me queda ese codigo que tengo?
  #4 (permalink)  
Antiguo 06/10/2011, 19:32
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 9 años, 10 meses
Puntos: 793
Respuesta: Expresiones regulares

Tienes que reemplazar las funciones por preg_replace y usar delimitadores. Entre otros cambios.

http://php.net/manual/es/book.pcre.php
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 06/10/2011, 19:47
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 9 años, 9 meses
Puntos: 18
Respuesta: Expresiones regulares

ya consegui como :D la verdad busque por una pagina en internet...porque para ser sincero de expresiones regulares no se nada...no se porq pero es que no las entiendo..por eso es que pido aqui ayuda ps entonces

obtuve esto
Código PHP:
Ver original
  1. function texto_a_url($text){
  2.         // pad it with a space so we can match things at the start of the 1st line.
  3.         $ret = ' ' . $text;
  4.  
  5.         // matches an "xxxx://yyyy" URL at the start of a line, or after a space.
  6.         // xxxx can only be alpha characters.
  7.         // yyyy is anything up to the first space, newline, comma, double quote or <
  8.         $ret = preg_replace("#([\t\r\n ])([a-z0-9]+?){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i", '\1<a href="\2://\3" target="_blank">\2://\3</a>', $ret);
  9.  
  10.         // matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
  11.         // Must contain at least 2 dots. xxxx contains either alphanum, or "-"
  12.         // zzzz is optional.. will contain everything up to the first space, newline,
  13.         // comma, double quote or <.
  14.         $ret = preg_replace("#([\t\r\n ])(www|ftp)\.(([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i", '\1<a href="http://\2.\3" target="_blank">\2.\3</a>', $ret);
  15.  
  16.         // matches an [email protected] type address at the start of a line, or after a space.
  17.         // Note: Only the followed chars are valid; alphanums, "-", "_" and or ".".
  18.         $ret = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\[email protected]\\3\">\\[email protected]\\3</a>", $ret);
  19.  
  20.         // Remove our padding..
  21.         $ret = substr($ret, 1);
  22.  
  23.         return($ret);
  24.     }

como se deberia modificar para obtener lo que yo quiero principalmente? gracias
  #6 (permalink)  
Antiguo 06/10/2011, 19:48
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 9 años, 10 meses
Puntos: 793
Respuesta: Expresiones regulares

Si en internet se encuentran bastantes ya hechas pero trata de no usar obsoletas. No está de más aprender un poco también.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #7 (permalink)  
Antiguo 06/10/2011, 19:51
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 9 años, 9 meses
Puntos: 18
Respuesta: Expresiones regulares

Cita:
Iniciado por andresdzphp Ver Mensaje
No está de más aprender un poco también.
si tienes toda la razon! pero no se porque..pero trato de entender como es eso y no se no entiendo O.o otras cosas si las entiendo super bien! y eso simplemente NO...bueno buscare entonces como detectar URL con .jpg .png .etc ja :D bueh gracias por responder a mi tema
  #8 (permalink)  
Antiguo 06/10/2011, 20:40
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 9 años, 10 meses
Puntos: 793
Respuesta: Expresiones regulares

Bueno hay te la adapté capo, espero que te sirva. Si algo comentas y la seguimos mirando a ver como queda:

Código PHP:
Ver original
  1. <?php
  2. function texto_a_url($text) {
  3.     $ret = ' ' . $text;
  4.    
  5.     $patrones = array(
  6.     '#([\t\r\n ])([a-z0-9]+?){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?\.(png|jpg|gif))#i',
  7.     '#([\t\r\n ])([a-z0-9]+?){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i');
  8.     $reemplazos = array('\1<img src="\2://\3" />',
  9.     '\1<a href="\2://\3" target="_blank">\2://\3</a>');
  10.     $ret = preg_replace($patrones, $reemplazos, $ret);
  11.    
  12.     $ret = preg_replace("#([\t\r\n ])(www|ftp)\.(([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i",
  13.     '\1<a href="http://\2.\3" target="_blank">\2.\3</a>', $ret);
  14.    
  15.     $ret = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i",
  16.     "\\1<a href=\"mailto:\\[email protected]\\3\">\\[email protected]\\3</a>", $ret);
  17.    
  18.     $ret = substr($ret, 1);
  19.    
  20.     return ($ret);
  21. }
  22.  
  23. $str = 'http://upload.wikimedia.org/wikipedia/commons/8/87/William_Boyce4.png http://www.google.com';
  24.  
  25. echo texto_a_url($str);

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Última edición por andresdzphp; 06/10/2011 a las 22:36 Razón: Mejora del código
  #9 (permalink)  
Antiguo 07/10/2011, 16:28
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 9 años, 9 meses
Puntos: 18
Respuesta: Expresiones regulares

Gracias! le llego el mensaje que le envie?
  #10 (permalink)  
Antiguo 07/10/2011, 16:33
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 9 años, 10 meses
Puntos: 793
Respuesta: Expresiones regulares

Es lo mismo, hay que agregar otro patrón (al inicio de los 2 que puse) que detecte si el link es de youtube y que tenga un código Estoy seguro que los expertos te podrán guiar, yo paso (no vaya ser que me sigan votando negativo por ayudar).

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #11 (permalink)  
Antiguo 07/10/2011, 17:19
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 9 años, 9 meses
Puntos: 18
Respuesta: Expresiones regulares

wow...ok! bueno muchisimas gracias :D de verdad :D me has ayudado bastante

Etiquetas: expresiones, html, regulares
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:54.