Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/06/2012, 06:02
MasterJose
 
Fecha de Ingreso: abril-2012
Mensajes: 43
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Posicion de un valor en una cadena

Gracias por el interes , pero no es lo que busco, de hecho yo estoy usando la funcion preg_match_all


Esta funcion
Código PHP:
int preg_match_all string $pattern string $subject [, array &$matches [, int $flags PREG_PATTERN_ORDER [, int $offset ]]] ) 
Te devuelve en el 3er parametro la posicion de las coincidencias, eso ya lo tengo.

Es decir si yo tengo la cadena : "123 456 78911;"

Yo espero y quiero que me diga que la posicion del ";" sea la 4, es decir tome los numeros como un todo, no se si me explico...creo que esto se puede hacer aplicando expresiones regulares pero no lo tengo del todo claro...a ver si alguien que sabe de esto ¿??



Cita:
Iniciado por davidadanu Ver Mensaje
Revisa este link a ver si te puede ayudar el método:
http://www.php.net/manual/es/function.strpos.php


Te escribo un ejemplo de lo que creo que quieres hacer:
Código:
$strCadena = "452 652 321 458;5864 474 152 458;456 258 475 6952;"; 
$charDelimitador = ";";

// Array para guardar las posiciones encontradas
$arrPosiciones = array();

// Posición del índice actual en la cadena (comenzamos por el principio)
$intPosicionActual = 0;

// Variable que guardará el índice de la ocurrencia, comienza siendo true para que entre en el while
$pos = true;

// Mientras encuentre el delimitador (no devuelva false)
while ($pos != false){

  // Buscamos la posición del delimitador en la cadena a partir de la posición actual
  $pos = strpos($strCadena, $charDelimitador, $intPosicionActual);

  // Si ha encontrado el delimitador
  if ($pos != false){

    // metemos la posición en el array
    array_push($arrPosiciones, $pos);

     // marcamos como posición actual el índice encontrado
    $intPosicionActual = $pos + 1;

    // Si la posición actual es mayor al tamaño de la cadena
    if ($pos > strlen($strCadena)){

      // Marcamos la posición actual como false para que salga del while (para evitar desbordamiento)
      $pos = false;
    }
  }
}

// Para cada posición guardada en el array
for($i=0; $i < sizeOf($arrPosiciones); $i++){
  
  // Imprimimos las posiciones encontradas por orden
  echo $i.'º ocurrencia en el índice '.$arrPosiciones[$i].'<br>';
}
PD: El código no lo he probado así que puede tener errores, pero creo que te ayudará a comprender cómo hacerlo.