Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Reemplazar eregi_replace por preg_match

Estas en el tema de Reemplazar eregi_replace por preg_match en el foro de PHP en Foros del Web. Hola gente, nunca pido estas cosas, ya que me gustan hacerlas a mi, pero no tengo idea de expresiones regulares. Y como esta deprecated y ...
  #1 (permalink)  
Antiguo 10/05/2013, 09:45
Avatar de softmaster  
Fecha de Ingreso: diciembre-2008
Mensajes: 230
Antigüedad: 15 años, 4 meses
Puntos: 12
Reemplazar eregi_replace por preg_match

Hola gente, nunca pido estas cosas, ya que me gustan hacerlas a mi, pero no tengo idea de expresiones regulares. Y como esta deprecated y me da errores queria actualizarlo.


tengo este codigo con eregi_replace (reemplaza links, correos, etc de una cadena)

Código PHP:
function url_si_link($text){ 
        
$text html_entity_decode($text); 
        
$text " ".$text
        
$text eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)'
                
'<a href="\1">\1</a>'$text); 
        
$text eregi_replace('(((f|ht){1}tps://)[-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



me darian una mano para utilizarlo con preg_match ?

abz
  #2 (permalink)  
Antiguo 10/05/2013, 09:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Reemplazar eregi_replace por preg_match

Te explico para que tu lo hagas.

La única diferencia, la mayoría de las veces, de la expresión regular en EREG vs PCRE son los delimitadores de expresión.

Si antes tenías esto:
Cita:
[a-z]
Ahora debes hacer esto:
Cita:
/[a-z]/
Los delimitadores no necesariamente deben ser / sino cualquier otro siempre y cuando no esté presente en la expresión completa.

Eso también lo puedes consultar en el manual.

http://php.net/manual/es/book.pcre.php
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 10/05/2013, 10:37
Avatar de softmaster  
Fecha de Ingreso: diciembre-2008
Mensajes: 230
Antigüedad: 15 años, 4 meses
Puntos: 12
Respuesta: Reemplazar eregi_replace por preg_match

Me da error...

Código PHP:
        $text html_entity_decode($text); 
        
$text " ".$text
        
$text preg_replace('/(((f|ht){1}tp://)[-a-zA-Z0-9@:%_+.~#?&//=]+)/'
                
'<a href="\1">\1</a>'$text); 
        
$text preg_replace('/(((f|ht){1}tps://)[-a-zA-Z0-9@:%_+.~#?&//=]+)/'
                
'<a href="\1">\1</a>'$text); 
        
$text preg_replace('/([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_+.~#?&//=]+)/'
        
'\1<a href="http://\2">\2</a>'$text); 
        
$text preg_replace('/([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3})/'
        
'<a href="mailto:\1">\1</a>'$text); 
        return 
$text
Warning: preg_replace() [function.preg-replace]: Unknown modifier '/'
  #4 (permalink)  
Antiguo 10/05/2013, 10:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Reemplazar eregi_replace por preg_match

Lee bien lo que te he dicho:
Cita:
Los delimitadores no necesariamente deben ser / sino cualquier otro siempre y cuando no esté presente en la expresión completa.
Y es obvio que la expresión que te da error lleva barras dentro de la expresión, así que debes elegir otros delimitadores o bien, escapar las barras dentro así:
Cita:
/http:\/\//
¿Se entiende?

Además secuencias como [[:space:]] no están disponibles en PCRE así que debes usar sus equivalentes PCRE.

Por favor lee el manual, ahí está muy bien explicado todo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 10/05/2013, 10:49
Avatar de softmaster  
Fecha de Ingreso: diciembre-2008
Mensajes: 230
Antigüedad: 15 años, 4 meses
Puntos: 12
Respuesta: Reemplazar eregi_replace por preg_match

si! ;) no habia entendido (justo estaba leyendo)... ahi lo modifique y funciona bien!... Gracias

Etiquetas: expresiones, preg_match, 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




La zona horaria es GMT -6. Ahora son las 01:50.