Foros del Web » Programando para Internet » PHP »

leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

Estas en el tema de leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!! en el foro de PHP en Foros del Web. Hola amigos. Tengo una cadena de texto metida en una variable, y no se cual es la función para recorrer esa cadena de texto y ...
  #1 (permalink)  
Antiguo 01/04/2008, 16:16
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 2 meses
Puntos: 0
leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

Hola amigos.

Tengo una cadena de texto metida en una variable, y no se cual es la función para recorrer esa cadena de texto y cambiar unos caracteres que yo quiera de esa cadena por otros...

Alguien podría ayudarme?

Muchisimas gracias...
  #2 (permalink)  
Antiguo 01/04/2008, 16:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

Hola walvaRo,

Para eso ocupas str_replace.

Saludos.
  #3 (permalink)  
Antiguo 01/04/2008, 16:42
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

Hola GatorV

Esto es lo que stoy intentando hacer:

Código:
<?php
//Esta es la URL:
//   http://localhost/web/pruebas/prueba_URL_01.php

$url=$_SERVER["REQUEST_URI"];
echo "<h3>".$url."</h3>";

$numero= strlen($url);
echo $numero;

// Aquí sutituyo el 01 por el 02, pero, el resto de caracteres de la cadena
//		quedan destruidos o no aparecen, o donde estan???
$urlnueva = str_replace("$url", "01", "02");
echo $urlnueva;

?>
El problema es que como ves, mi URL deja de ser una URL y solo me quedo con el 02... como sustituyo el 01 por el 02 de la URL, sin cargarme el resto y logrando al final una nueva URL ???

Saludos!
  #4 (permalink)  
Antiguo 01/04/2008, 16:46
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

Lee el manual para la función str_replace() y aplica bien la sintaxis:

Cita:
Iniciado por PHP.net/str_replace
Descripción
mixed str_replace ( mixed $cadena_buscada , mixed $cadena_sustituta , mixed $cadena_original [, int &$veces ] )
Esta función sustituye todas las apariciones de la cadena_buscada en la cadena cadena_original por la cadena_sustituta dada.
Un saludo,
  #5 (permalink)  
Antiguo 01/04/2008, 17:00
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

Hola okram, he leido el manual de str_replace..

Pero por lo que entiendo, es una funcion diseñada para un texto conocido de antemano...

Yo lo que quiero es cambiar el 01 por el 02 de una cadena de texto que cambia segun sea la url, es decir busco hacer algo que funcione de manera automatica, puesto que yo no puedo saber que cadena de texto es...

No Se si lo he entendido bien o no.. Si me pudieseis ayudar, es que no estoy seguro de nada... :S Lo he probado en mi pc y me da error

"Parse error: parse error, expecting `T_VARIABLE' or `'$'' in c:\apache\htdocs\pruebas\prueba_url_01.php on line 26"
  #6 (permalink)  
Antiguo 01/04/2008, 17:05
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

Es sólo un error de orden de los parámetros. Primero debe ir el texto que buscas y que vas a reemplazar, luego el texto reemplazo, y finalmente la cadena en la que vas a buscar y reemplazar los textos:

Código PHP:
$urlnueva str_replace("01""02"$url); 
Un saludo,
  #7 (permalink)  
Antiguo 01/04/2008, 17:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

Como te dice Okram, por favor lee el manual, el orden de tus variables es incorrecto:
Código PHP:
$urlnueva str_replace("01""02"$url); 
Saludos.
  #8 (permalink)  
Antiguo 02/04/2008, 03:17
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

Ooops, cierto, he desordenado los parametros del str_replace...

He estado leyendo la web de php, y me ha ayudado un compañero del curro para entender las strrpos, strpos, strlen, substr... etc..

Pues bien, he hecho este codigo que no se si funciona del todo bien, pero a ver si dais algun consejillo útil para mejorarlo...

Os explico un poco.. Este codigo lo que hace es sustituir en la URL que se le pasa a la funcion como parametro.., los caracteres que están delimitados entre "_" y "." por los caracteres que yo quiero, y que le paso desde los enlaces <a> de los idiomas, (como parametro también...).

Claro está, yo se que siempre van a tener todas mis paginas un _ES.php, (o *.html, o *.shtml, o *.asp, o lo que sea...), (el "ES", puede ser "EN", "FR", o las letras del idioma que sea...)

La URL se puede conseguir con un:
$url=$_SERVER["REQUEST_URI"];


Aquí está el codigo... A ver que os parece...

Código PHP:
<?php

function cambiaURL($url$lenguaje) {

    
$posicion_guion=strrpos($url"_");
    
$PREFIJO=substr($url1$posicion_guion);

    
$posicion_punto=strrpos($url".");
    
$SUFIJO=substr($url$posicion_punto);

    
$url_modificada=$PREFIJO $lenguaje $SUFIJO;

    return (
$url_modificada);
}

?>


EJEMPLO -> $url_actual="http://localhost/pruebas/index2_ES.html";


<a href="<?php cambiaURL($url_actual,"EN")?>">Enlace ingles</a>
<a href="<?php cambiaURL($url_actual,"IT")?>">Enlace italiano</a>
<a href="<?php cambiaURL($url_actual,"ES")?>">Enlace español</a>
<a href="<?php cambiaURL($url_actual,"FR")?>">Enlace frances</a>

No se si las posiciones iniciales se representan con "1" o con "0"


Muchas gracias de antemano por vuestra ayuada!!! Entre todos podemos conseguir un buen codigo para hacer webs en varios idiomas facilemnte y alternar entre ellas..
  #9 (permalink)  
Antiguo 02/04/2008, 03:46
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Re: leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

La posición inicial debe de ser 0 y si no incluyes el guión en el sustituyente debes sumar uno a la posición del guién en $prefijo porque si no te lo comes...

Código PHP:
<?php

function cambiaURL($url$lenguaje) {

    
$posicion_guion=strrpos($url"_");
    
$PREFIJO=substr($url0$posicion_guion+1);

    
$posicion_punto=strrpos($url".");
    
$SUFIJO=substr($url$posicion_punto);

    
$url_modificada=$PREFIJO $lenguaje $SUFIJO;

    return (
$url_modificada);
}
print 
cambiaURL("http://localhost/pruebas/index2_ES.html","EN")
?>
Otro ejemplo con una lista de idiomas y sufijos y una función que genera los enlaces:
Código PHP:
<?php

$url_actual
="http://localhost/pruebas/index2_ES.html";
$idiomas=array("Español","Inglés","Alemán","italiano");
$idiomas_suf=array("ES","EN","DE","IT");

function 
cambiaURL($url$lenguaje) {

    
$posicion_guion=strrpos($url"_");
    
$PREFIJO=substr($url0$posicion_guion+1);

    
$posicion_punto=strrpos($url".");
    
$SUFIJO=substr($url$posicion_punto);

    
$url_modificada=$PREFIJO $lenguaje $SUFIJO;

    return (
$url_modificada);
}

function 
generaEnlaces()
{
    global 
$url_actual,$idiomas,$idiomas_suf;
    foreach (
$idiomas as $key=>$value)
    {
        echo 
'&nbsp;&nbsp;<a href="'.cambiaURL($url_actual,$idiomas_suf[$key]).'">Enlace '.$value.'</a>&nbsp;';
    }
}

generaEnlaces()
?>
Un saludo.
__________________
[+]
[+]

Última edición por yoseman; 02/04/2008 a las 03:57
  #10 (permalink)  
Antiguo 02/04/2008, 05:52
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

Muchas gracias yoseman, esta tarde en cuanto salga del trabajo me pongo manos a la obra y pruebo nuestra mini función!!! A ver si Funciona !! Que si Funciona mama mia !! habre solucionado una duda y un pero muy grande...

Saludos!
  #11 (permalink)  
Antiguo 02/04/2008, 12:29
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

HOla de nuevo!!! Estoy probando este codigo:

Código PHP:
<?php

$url
=$_SERVER["REQUEST_URI"];
echo 
"<h3>".$url."</h3>";

$numerostrlen($url);
echo 
$numero;
echo 
"<p>";

function 
cambiaURL($url$lenguaje) {

    
$posicion_guion=strrpos($url"_");
    
$PREFIJO=substr($url0$posicion_guion+1);

    
$posicion_punto=strrpos($url".");
    
$SUFIJO=substr($url$posicion_punto);

    
$url_modificada=$PREFIJO.$lenguaje.$SUFIJO;

    return (
$url_modificada);
}

echo 
"HOLA ESPAÑOL<p>";
 
?>

<a href="<?php cambiaURL($url,"es")?>">Español</a>
<a href="<?php cambiaURL($url,"en")?>">ingles</a>
Resulta que los dos enlaces al final, tiene el mismo link, no cambia el "es" o el "en", segun el enlace... A que se puede deber que no funcione como debe???
NECESITO AYUDA POR FAVOR NO SE POR QUE NO FUNCIONA !!! ...
Tengo instalado el php Version 4.1.1, supongo que no habra ningun problema...

Saludos!

Última edición por walvaRo; 02/04/2008 a las 13:12
  #12 (permalink)  
Antiguo 03/04/2008, 01:58
 
Fecha de Ingreso: febrero-2004
Mensajes: 446
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: leer cadena de texto, y cambiar determinados caracteres por otros, AYUDA!!!

Hola, he descubierto DONDE estaba mi error...

Resulta de lo mas sencillo, es una CHORRADA, pero me ha dado un verdadero quebradero de cabeza...
Hay dos opciones para solucionar esto:

Código PHP:
    return($url_modificada);
    
}

echo "HELLO ENGLISH<p>";
 
?>

<br />
<a href="<?php echo(cambiaURL($url,"es"));?>">Español</a>
<br />
<a href="<?php echo(cambiaURL($url,"en"));?>">ingles</a>
UNA es esta, que creo que es la buena..., es escribir un "echo" en el a href, por que si no es como si no escribiese nada, o eso me salia en el codigo fuente de la pagina...

Código PHP:
    echo $url_modificada;
}

echo "HELLO ENGLISH<p>";
 
?>
<br />
<a href="<?php cambiaURL($url,"es");?>">Español</a>
<br />
<a href="<?php cambiaURL($url,"en");?>">ingles</a>
OTRA es esta, en la que el echo lo meto dentro de la funcion, y prescindo del return,... Aunque segun mi compañero de curro dice que esta es la forma cutre de hacer las cosas... Dice que es inutil.. Y que la funcion pierde el sentido que tiene y que no vale de nada escribirla así...

Espero que os sirva esta mini función para alguna situación!! Saludos!

ESTE ES UN EJEMPLO que funciona:

http://peachepe.freehostia.com/hola_es.php

CODIGO FINAL:

Código PHP:
<?php

$url
=$_SERVER['REQUEST_URI'];
echo 
'<h3>'.$url.'</h3>';

$numerostrlen($url);
echo 
"Número de caracteres de 'url': ".$numero."<p>";

function 
cambiaURL($url$lenguaje) {

    
$posicion_guion=strrpos($url"_");
    
$PREFIJO=substr($url0$posicion_guion+1);

    
$posicion_punto=strrpos($url".");
    
$SUFIJO=substr($url$posicion_punto);

    
$url_modificada=$PREFIJO.$lenguaje.$SUFIJO;
    return(
$url_modificada);
}

echo 
"HOLA ESPAÑOL<p>";
 
?>

<br />
<a href="<?php echo(cambiaURL($url,"es"));?>">Español</a>
<br />
<a href="<?php echo(cambiaURL($url,"en"));?>">ingles</a>

Última edición por walvaRo; 03/04/2008 a las 02:49
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 03:21.