Foros del Web » Programando para Internet » PHP »

Ver la posición de una cadena con strpos

Estas en el tema de Ver la posición de una cadena con strpos en el foro de PHP en Foros del Web. Hola a tod@s Me gustaria que me ayudaran ya que llevo dias con este problema y necesito solucionarlo... Después de almacenar el contenido de un ...
  #1 (permalink)  
Antiguo 05/04/2011, 12:01
 
Fecha de Ingreso: febrero-2010
Mensajes: 85
Antigüedad: 14 años, 1 mes
Puntos: 0
Ver la posición de una cadena con strpos

Hola a tod@s
Me gustaria que me ayudaran ya que llevo dias con este problema y necesito solucionarlo...

Después de almacenar el contenido de un archivo en una variable, quiero buscar una cadena de caracteres que hay en él. Mi código es este:
Código PHP:
    $ruta="http://ruta.com/backup_logs/archivo.txt";
    
$archivo=file_get_contents($ruta);
    
$archivo nl2br($archivo);

    echo 
$archivo."<br>";
    
$posicion=strpos($archivo,'mensaje');
    if (
$posicion == false)
    {
                  echo 
"No se encontro la cadena";
    }
    echo 
"<br>Posicion:".$posicion
Utilizo strpos para que me de la posicion de la palabra "mensaje". Pero no me encuentra nada.
Incluso hago un "echo $archivo" para ver si se guardó bien el contenido en la variable, y se guarda perfectamente:


Pero no encuentra nada, me sale el mensaje del IF "No se encontro la cadena".
Incluso si le digo que busque por una letra, por ejemplo la "a" me sale una posicion que no tiene nada que ver con la posicion real.

¿Por que puede pasar esto?
Llevo dias con lo mismo y no consigo solucionarlo, si alguien me ayuda se lo agradecería muchisimo!!

Gracias!
  #2 (permalink)  
Antiguo 06/04/2011, 02:33
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Ver la posición de una cadena con strpos

Tal vez te esta sucediendo lo que dice el manual que puede suceder al preguntar solo con ==
Cita:
Iniciado por php.net
Warning

Esta función quizá devuelve Boolean FALSE, pero quizá también devuelve un valor non-Boolean que se evaluará como FALSE, como 0 o "". Por favor lea la sección en Booleans para más información. Use el operador === para testear el valor devuelto por esta función.
Saludos!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 06/04/2011, 03:41
 
Fecha de Ingreso: febrero-2010
Mensajes: 85
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Ver la posición de una cadena con strpos

Hola Marvin, gracias por contestar.
También probé el IF asi, con === pero hace lo mismo, de todas maneras la variable posicion debería darme la posicion independientemente de como ponga el IF.

No se, esto es un misterio. Tengo la sensacion de que file_get_contents está guardando en un formato diferente, con caracteres raros y por eso no encuentra nada.

Muchas Gracias, saludos!!!
  #4 (permalink)  
Antiguo 06/04/2011, 12:01
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Ver la posición de una cadena con strpos

Lo que puedes hacer es mirar el codigo fuente de la pagina para ver si esta poniendo html o algo mas entremedio.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 27/04/2011, 01:51
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Respuesta: Ver la posición de una cadena con strpos

Pues a mí me está sucediendo algo parecido, creo un array de palabras que quiero buscar, y repito la búsqueda en la cadena, tantas veces como palabras hay en el array, para comprobar que comprueba la posición de cada una de las palabras. El problema surge con que algunas palabras detecta la posición, y otras me dice que no existe. Cuando realmente existen todas la palabras.

Este es el código que tengo:
Código PHP:
<?php
$ruta 
= &#8220;archivo.txt”; 
$temporada = array(" ""Primera temporada""Segunda temporada""Tercera temporada""Cuarta temporada""Quinta temporada""Sexta temporada""Séptima temporada""Octava temporada""Novena temporada""Decima temporada");
$rOpenFile fopen ($ruta,"r");
while (!
feof($rOpenFile)){ 
    
$CFs fgets($rOpenFile,100000); 
    
$CsFile $CsFile.$CFs;

fclose($rOpenFile);
function 
BsLoc($par,$pos) {
    global 
$CsFile;
    
$var1 strpos($CsFile$par$pos);
    return 
$var1;
}
$vas1 0;
for(
$n=1;$n<=10;$n++) {
    
$ST $temporada[$n];
    
$vas1 BsLoc($ST$vas1);
    if (
$vas1) { $CoTotal[$n] = $vas1; }
    else {
$n 11;}
    echo 
$ST." – posición: ".$CoTotal[$n]."<br>";
}
$totaltemp count($CoTotal);
El problema surge principalmente con cadenas, que contienen cientos, e incluso millones de caracteres, en cadenas cortas funciona correctamente. Puede ser que haya algún problema de php que no lea correctamente cadenas tan grandes?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)

Última edición por mdk; 27/04/2011 a las 01:58
  #6 (permalink)  
Antiguo 27/04/2011, 02:46
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Respuesta: Ver la posición de una cadena con strpos

Vale. he probado con stripos en vez de strpos, y "Quinta temporada" lo detecta, pero cuando llega a "Séptima temporada" no lo vuelve a detectar. (y si que existe).

Alguien sabe que puede suceder?
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #7 (permalink)  
Antiguo 27/04/2011, 03:55
Avatar de mdk
mdk
 
Fecha de Ingreso: noviembre-2002
Mensajes: 531
Antigüedad: 21 años, 5 meses
Puntos: 11
Respuesta: Ver la posición de una cadena con strpos

Es curioso y desconcertante, si el archivo está guardado en cualquier otro formato que no sea UTF-8, no realiza la búsqueda correctamente, en cambio sí guardo el archivo como UTF-8 busca todo correctamente.
__________________
SoY Lo Ke VeS iNKLuSo KuAnDo No Me VeS ;)
  #8 (permalink)  
Antiguo 27/04/2011, 05:12
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Ver la posición de una cadena con strpos

En el primer caso, no veo la palabra "Mensaje" en toda esa imagen, alomejor la salté pero no la veo.

Etiquetas: strpos, cadenas
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 06:33.