Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: dperniam en 29 Diciembre 2011, 15:31 pm



Título: UBICAR CADENA EXACTA DENTRO DE OTRA
Publicado por: dperniam en 29 Diciembre 2011, 15:31 pm
Buenos Dias amigos:
Tengo un problema para ubicar la aparicion exacta de una cadena dentro de otra, tengo un string donde tengo varios indicadores tales como:

$string="CONTADOR_ENVIO_00: 20292; CONTADOR_ENVIO_04: 029293; CONTADOR_ENVIO: 282828"

Los numeros que aparecen luego de cada CONTADOR_ENVIO son variables y generados por otro script. Lo que yo deseo hacer es cada cierto tiempo tomar el trozo de texto que aparece despues de  cada variable de CONTADOR ENVIO y a traves de un "substr" y un "explode" tomar el nuuevo numero.

Lo estoy haciendo a traves de strstr de la siguiente manera

Código:
<?php

$string="CONTADOR_ENVIO_00: 20292;  CONTADOR_ENVIO_04: 029293; CONTADOR_ENVIO: 282828";
$ubicar="CONTADOR_ENVIO";

echo $cadena=strstr($string, $ubicar);
?>

El problema es que cuando quiero ubicar a "CONTADOR_ENVIO:"  me toma el primero que consigue que es "CONTADOR_ENVIO_00", y yo deseo que la salida sea: CONTADOR_ENVIO: 282828";

Pueden ayudarme a encontrar una manera de que la busqueda sea la cadena exacta y no, la aproximada???

Espero haberme explicado bien.
Saludos Cordiales


Título: Re: UBICAR CADENA EXACTA DENTRO DE OTRA
Publicado por: AckeR en 29 Diciembre 2011, 15:59 pm
Nuevamente puedes utilizar la función explode para identificar algún caracter, así poder dividir la cadena y escoger la que utilizarás.

Yo lo haría de esta manera:

Código
  1.  
  2. $string="CONTADOR_ENVIO_00: 20292;  CONTADOR_ENVIO_04: 029293; CONTADOR_ENVIO: 282828"; //Cadena
  3.  
  4. $dividido = explode(";", $string); //identifico el caracter ";" de donde comenzaré a realizar la división de la cadena y estas se almacenarán en un array.
  5.  
  6. for($i=0;$i<sizeof($dividido);$i++) // Recorremos el Array.
  7. {
  8.    echo $dividido[$i]."<br/>";   // Mostramos los Resultados.
  9. }
  10.  
  11.  

Espero que te sirva ;)

Suerte.-!


Título: Re: UBICAR CADENA EXACTA DENTRO DE OTRA
Publicado por: dark_sargon en 30 Diciembre 2011, 00:48 am
Lo que publicó AckeR es justo lo que pensaba. Cabe recordar que sizeof() es un alias de count().

Aunque podrías usar el código que tienes, solo debes tener en cuenta que strstr() buscará la primera coincidencia. Viendo la forma del string puedes cambiar el valor de $ubicar así:

Código
  1. <?php
  2.  
  3. $string="CONTADOR_ENVIO_00: 20292;  CONTADOR_ENVIO_04: 029293; CONTADOR_ENVIO: 282828";
  4. $ubicar="CONTADOR_ENVIO:"; // Sólo agrégale :
  5.  
  6. echo $cadena=strstr($string, $ubicar);
  7. ?>


Título: Re: UBICAR CADENA EXACTA DENTRO DE OTRA
Publicado por: Og. en 30 Diciembre 2011, 04:29 am
Y para cuando necesites aun mas precision, exsisten las expresiones regulares.

Código
  1. $string="CONTADOR_ENVIO_00: 20292;  CONTADOR_ENVIO_04: 029293; CONTADOR_ENVIO: 282828";
  2. preg_match($string, "/CONTADOR_ENVIO: \d*/", $matches);
  3. print_r($matches);
  4.