Foros del Web » Programando para Internet » PHP »

Manejo de Strings

Estas en el tema de Manejo de Strings en el foro de PHP en Foros del Web. Hola, usando de referencia varios post de aquí y un manual de php que tengo por aquí, he hecho este código cuyo fin (supuestamente) era ...
  #1 (permalink)  
Antiguo 11/11/2006, 09:44
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 8 meses
Puntos: 28
Manejo de Strings

Hola, usando de referencia varios post de aquí y un manual de php que tengo por aquí, he hecho este código cuyo fin (supuestamente) era el de tomar una url y sacarle el http://, el www., y el .com / .info o .co.uk (intenté tomar en cuenta todas las diferentes extenciones).

Aquí dejo el código que no se porque pero no funciona (no da error tampoco, solo que no cumple su función...

Código PHP:
    $dir "http://www.marceloferreiro.com"//es un ejemplo puede ser cualquier url
    
$dir str_replace ("http://"""$dir);
    
$dir str_replace ("HTTP://"""$dir);
    
$dir str_replace ("www."""$dir);
    
$dir str_replace ("WWW."""$dir);
    
$dir str_replace ("/"""$dir);
    
    
strrev($dir);
    if (
eregi(".com.",$dir) || eregi(".org.",$dir) || eregi(".edu.",$dir) || eregi(".net.",$dir) || eregi(".biz.",$dir) || eregi(".gub.",$dir) || eregi(".guv.",$dir)){
        
substr ($dir,7);
    }elseif (
eregi(".com",$dir) || eregi(".org",$dir) || eregi(".edu",$dir) || eregi(".net",$dir) || eregi(".biz",$dir) || eregi(".gub",$dir) || eregi(".guv",$dir)){
        
substr ($dir,4);
    }
    elseif
     (
eregi(".info.",$dir) || eregi(".jobs.",$dir) || eregi(".name.",$dir) || eregi(".mobi.",$dir)){
        
substr ($dir,8);
    }elseif (
eregi(".info",$dir) || eregi(".jobs",$dir) || eregi(".name",$dir) || eregi(".mobi",$dir)){
        
substr ($dir,5);
    }
    elseif
     (
eregi(".travel",$dir)){
        
substr ($dir,7);
    }
    elseif
     (
eregi(".co.uk",$dir) || eregi(".me.uk",$dir) || eregi(".co.nz",$dir)){
        
substr ($dir,6);
    }
    else{ 
// para los .cl / .tv / .ws etc...
        
substr ($dir,3);
    }
    
strrev($dir);
    
    print 
"<br />***".$dir."***<br />"
Espero que alguien me pueda ayudar
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #2 (permalink)  
Antiguo 11/11/2006, 11:07
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 20 años, 10 meses
Puntos: 3
aun no entiendo pero que quieres lograr? convertir las url en link´s o simplemente borrarles los http y las extensiones?

si es para convertirlas en link este es el codigo:

Cita:
function make_links_blank($noticia)
{
return preg_replace(
array(
'/(?(?=<a[^>]*>.+<\/a>)
(?:<a[^>]*>.+<\/a>)
|
([^="\']?)((?:https?|ftp|bf2|):\/\/[^<> \n\r]+)
)/iex',
'/<a([^>]*)target="?[^"\']+"?/i',
'/<a([^>]+)>/i',
'/(^|\s)(www.[^<> \n\r]+)/iex',
'/(([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-]+)
(\\.[A-Za-z0-9-]+)*)/iex'
),
array(
"stripslashes((strlen('\\2')>0?'\\1<a href=\"\\2\">\\2</a>\\3':'\\0'))",
'<a\\1',
'<a\\1 target="_blank">',
"stripslashes((strlen('\\2')>0?'\\1<a href=\"http://\\2\">\\2</a>\\3':'\\0'))",
"stripslashes((strlen('\\2')>0?'<a href=\"mailto:\\0\">\\0</a>':'\\0'))"
),
$noticia
);
}
su uso sería: make_links_blank($row['tu_tabla']);

sólo reemplaza $noticia por lo que quieras colocar... y si es para quitarles los http: o los .com, .net .org (entre otras tantas extenciones) es:

Cita:
function cam($cadena){
$cadena=str_replace("http:","",$cadena);
$cadena=str_replace("HTTP:","",$cadena);
$cadena=str_replace("http","",$cadena);
$cadena=str_replace("ftp:","",$cadena);
$cadena=str_replace("FTP:","",$cadena);
$cadena=str_replace("ftp","",$cadena);
return $cadena;
}
Su uso sería echo cam($row['tabla]);

ahi tienes, tu veras si te pueden ser útiles... y como siempre se ha dicho, si lo pueden mejorar bienvenido sea... jajaja salu2
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #3 (permalink)  
Antiguo 11/11/2006, 11:16
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 8 meses
Puntos: 28
Como dije claramente es para remover los http, www y extenciones...

Y el código que pones ahí removería los http y los ftp


gracias igual por tu respuesta!
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #4 (permalink)  
Antiguo 11/11/2006, 11:22
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 20 años, 10 meses
Puntos: 3
lo que debes hacer es agregar los http ftp @ www .info .com .net .org .co.ar .co.ve .ve .co.uk etc o lo que quieras cambiar pero creo que ese script te ayudara...

(Claro esta, ahi tienes que copiar un cambiar la línea $cadena=str_replace("FTP:","",$cadena);
1 x cada extension o palabra que necesites cambiar)
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #5 (permalink)  
Antiguo 12/11/2006, 09:55
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 8 meses
Puntos: 28
gracias cirujano nuevamente, pero con str_replace me sacaría (por ej) TODOS los "com" entonces la web: www. comerciales .com quedaría "merciales"...


alguna otra idea?
please...

No se porque no funciona ese código que puse arriba
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #6 (permalink)  
Antiguo 12/11/2006, 16:23
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 8 meses
Puntos: 28
solucionado gracias, acá dejo el código por si a alguien le sirve:

Código PHP:
$dir "http://www.marceloferreiro.com"
    
$dir str_replace ("http://"""$dir); 
    
$dir str_replace ("HTTP://"""$dir); 
    
$dir str_replace ("www."""$dir); 
    
$dir str_replace ("WWW."""$dir); 
    
$dir str_replace ("/"""$dir); 
     
    if (
eregi(".com.",$dir) || eregi(".org.",$dir) || eregi(".edu.",$dir) || eregi(".net.",$dir) || eregi(".biz.",$dir) || eregi(".gub.",$dir) || eregi(".guv.",$dir)){ 
        
$dir substr (strrev($dir),7); 
    }elseif (
eregi(".com",$dir) || eregi(".org",$dir) || eregi(".edu",$dir) || eregi(".net",$dir) || eregi(".biz",$dir) || eregi(".gub",$dir) || eregi(".guv",$dir)){ 
        
$dir substr (strrev($dir),4); 
    } 
    elseif 
     (
eregi(".info.",$dir) || eregi(".jobs.",$dir) || eregi(".name.",$dir) || eregi(".mobi.",$dir)){ 
        
$dir substr (strrev($dir),8); 
    }elseif (
eregi(".info",$dir) || eregi(".jobs",$dir) || eregi(".name",$dir) || eregi(".mobi",$dir)){ 
        
$dir substr (strrev($dir),5); 
    } 
    elseif 
     (
eregi(".travel",$dir)){ 
        
$dir substr (strrev($dir),7); 
    } 
    elseif 
     (
eregi(".co.uk",$dir) || eregi(".me.uk",$dir) || eregi(".co.nz",$dir)){ 
        
$dir substr (strrev($dir),6); 
    } 
    else{ 
// para los .cl / .tv / .ws etc... 
        
$dir substr (strrev($dir),3); 
    } 
       
$dir strrev($dir); 
     
    print 
"<br />***".$dir."***<br />"
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
  #7 (permalink)  
Antiguo 12/11/2006, 17:06
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 2 meses
Puntos: 9
yo haria en su lugar...

Código PHP:
$url'http://www.nefertiter.com';
$partes explode('.'$url);
for (
$i $i count($partes); $i++){
    if (!
ereg('/',$partes[$i]) && strlen($partes[$i]) >= 4){
    
$url $partes[$i];
    break;
    }
}
echo 
$url

Última edición por Nefertiter; 12/11/2006 a las 17:15
  #8 (permalink)  
Antiguo 12/11/2006, 17:16
Avatar de Anarninquë
Colaborador
 
Fecha de Ingreso: julio-2005
Ubicación: MVD | Uruguay
Mensajes: 1.096
Antigüedad: 18 años, 8 meses
Puntos: 28
en ese caso se puede complicar con los subdominios :s
gracias igual por la recomendación

bye
__________________
Marcelo Ferreiro - Desarrollador Web
Mi Web - Pixelar.me
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 07:30.