Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] El valor de la variable no lo reconoce

Estas en el tema de El valor de la variable no lo reconoce en el foro de PHP en Foros del Web. <?php $texto=file_get_contents("2.txt","r")or die ("Archivo no encontrado"); function sacar($cadena , $sLeft, $sRight){ global $texto; $pleft = strpos($cadena , $sLeft, 0); if ($pleft !== false){ $pright = ...
  #1 (permalink)  
Antiguo 15/10/2015, 07:58
 
Fecha de Ingreso: octubre-2015
Mensajes: 6
Antigüedad: 8 años, 6 meses
Puntos: 0
El valor de la variable no lo reconoce

<?php
$texto=file_get_contents("2.txt","r")or die ("Archivo no encontrado");
function sacar($cadena , $sLeft, $sRight){
global $texto;
$pleft = strpos($cadena , $sLeft, 0);
if ($pleft !== false){
$pright = strpos($cadena , $sRight, $pleft + strlen($sLeft));
If ($pright !== false)
{
return (substr($cadena , $pleft + strlen($sLeft), ($pright - ($pleft + strlen($sLeft)))));
}
}
return '';
}
$texto1="ffyjjfdyikdrukhfmtqghoojgf;;;;;hggh";
echo sacar ($texto1, "mtq",";;;;;"); // la búsqueda funciona perfectamente
echo sacar ($texto, "@","lu"); //la variable $texto no lo Toma como string...
echo $texto; //se imprimE bien el contenido del archivo 2.txt correctamente
?>
// un saludo a todos soy novato y autodidacta pero muy torpe no consigo que la función sacar busque en la variable $texto... alguna pista? Gracias a todos....
  #2 (permalink)  
Antiguo 15/10/2015, 08:38
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 11 años, 10 meses
Puntos: 12
Respuesta: El valor de la variable no lo reconoce

Parece que el problema está en la variable global, además de que no es muy util ya que luego no la utilizas en la función.

Además veo un código algo enrevesado, yo lo simplificaría un poco simplemente utilizando dos veces la función explode(), una para cortar la cadena por la izquierda y otra por la derecha:

Código PHP:
function sacar($cadena$sLeft$sRight){
    
$cadena_sin_inicio explode($sLeft$cadena);
    if (isset(
$cadena_sin_inicio[1])){
        
$cadena_resultado explode($sRight$cadena_sin_inicio[1]);
        return 
$cadena_resultado[0];
    }else{
        return 
"";
    }


Y no uses la variable global, si no que pásale siempre la cadena por parámetro.
Si el problema continúa, prueba a imprimir el valor de $texto.
  #3 (permalink)  
Antiguo 15/10/2015, 09:37
 
Fecha de Ingreso: octubre-2015
Mensajes: 6
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: El valor de la variable no lo reconoce

Muchas gracias por contestar JPINT lo. Pruebo y te comento.... lo de incluir la variable global era probando por que no me funciona ni con ella ni sin ella. Y no se me ocurría nada...
  #4 (permalink)  
Antiguo 15/10/2015, 09:48
 
Fecha de Ingreso: octubre-2015
Mensajes: 6
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: El valor de la variable no lo reconoce

MUCHÍSIMAS GRACIAS, que rapidez y eficacia JPINT eres un maestro... lo que. Es saber.... me he llevado 2 semanas enredado y en un segundo solucionado.
  #5 (permalink)  
Antiguo 15/10/2015, 10:10
 
Fecha de Ingreso: octubre-2015
Mensajes: 6
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: El valor de la variable no lo reconoce

Bueno. sólo una cosa al buscar en él strinG sólo me permite como delimitador un carácter y necesito al menos tres. Voy a leer a ver si lo soluciono ;)
  #6 (permalink)  
Antiguo 15/10/2015, 10:56
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 11 años, 10 meses
Puntos: 12
Respuesta: El valor de la variable no lo reconoce

Entonces si que necesitas usar strpos() y substr():

Código PHP:
function sacar($cadena $sLeft$sRight){
    
//comprueba que cadena sLeft exista
    
$pleft strpos($cadena $sLeft0);

    if (
$pleft !== false){
        
//corta por la izquierda
        
$copia_cadena substr($cadena$pleft); 

        
//comprueba que cadena sRight exista en la cadena resultante
        
$pright strpos($copia_cadena $sRight0);

        if (
$pright !== false){
            
//devuelve la cadena cortada por izquierda y derecha
            
return substr($copia_cadena, -$pright); 
        }else{
            return 
""//o $copia_cadena si quieres devolver la que solo se corta por la izquierda
        
}
    }else{
        return 
"";
    }


En caso de que no quieras devolver la cadena con la que cortas (sLeft y sRight) tendras que sumar la longitud de esas cadenas a pLeft y pRight
  #7 (permalink)  
Antiguo 15/10/2015, 11:02
 
Fecha de Ingreso: octubre-2015
Mensajes: 6
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: El valor de la variable no lo reconoce

Gracias a probar tocan....
  #8 (permalink)  
Antiguo 15/10/2015, 11:02
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: El valor de la variable no lo reconoce

Me parece que te estas complicando la vida demasiado.

Yo usaria preg_match() y le pondria un patron que busque tu delimitador inicial y que no permita que contenga el delimitador final.

De esta manera podrias resumir tu codigo a una sola linea y seria bastante mas eficiente
__________________
http://www.roglastudios.es

Última edición por Dalam; 15/10/2015 a las 11:24
  #9 (permalink)  
Antiguo 15/10/2015, 14:21
 
Fecha de Ingreso: octubre-2015
Mensajes: 6
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: El valor de la variable no lo reconoce

Gracias DALAM leeré sobre PREG_MATCH, a VER si me entero...

Etiquetas: reconoce, valor, variable
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 15:09.