Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Snowden

[Resolvido] definir a maior posição

Recommended Posts

queria ajuda para definir qual a última ocorrência

<?php

$texto = 'aaaaaaa01aaaaaaa01aaaaaa02';

$busca = array ('00','01','02','03');
$cont = sizeof($busca);
for ($i = 0; $i<$cont; $i++) {
$num = $busca[$i];
$pos = strripos($texto, $num);
if ($pos == true) {
echo "Foi encontrado ($num) em ($pos)<br>";
  } 
}
?>

 

no exemplo acima ele encontra o último "01" eo último "02"

porem quero saber apenas o último de todos ou seja o "02".

 

teria como verificar tipo com IF á maior posição dada pelo ($pos) dai teria a última ocorrência xD

mais não sei como, ja quebrei a cabeça aki mano.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entendi bem o que você quer.

 

Por isso fiz duas possíveis tentativas.

 

var_dump( substr( $texto, strrpos( $texto, '01' ), 2 ) ); // string(2) "01"

var_dump( strrpos( $texto, '01' ) ); // int(16)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei se entendi bem o que você quer.

 

Por isso fiz duas possíveis tentativas.

 

var_dump( substr( $texto, strrpos( $texto, '01' ), 2 ) ); // string(2) "01"

var_dump( strrpos( $texto, '01' ) ); // int(16)

 

amigo vlw pela atenção mais isso não tem nada á ver =(

 

no meu exemplo acima ele imprime isso..

 

Foi encontrado (01) em (16)

Foi encontrado (02) em (24)

 

mais..!!! queria que só fosse impresso "Foi encontrado (02) em (24)" por q ele éo último, tendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

queria que só fosse impresso "Foi encontrado (02) em (24)" por q ele éo último, tendeu ?

 

<?php
$texto = 'aaaaaaa01aaaaaaa01aaaaaa02';
$busca = array ('00','01','02','03');

$p = null;
$o = -1;

foreach ( $busca as $i ) {
$c = strrpos( $texto , $i );

if ( $c !== false && $c > $o ) {
	$p = $i;
	$o = $c;
}
}

if ( $o != -1 ) {
echo 'Foi encontrado ' , $p , ' em ' , $o;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caramba João, vlw mesmo cara ;)

 

Você ainda pode fazer o seguinte ajusta de otimização:

 

<?php
$texto = 'aaaaaaa01aaaaaaa01aaaaaa02';
$busca = array ('00','01','02','03');

$p = null;
$o = -1;
$l = strlen( $texto );

foreach ( $busca as $i ) {
   	$c = strrpos( $texto , $i );

   	if ( $c !== false && $c > $o ) {
           	$p = $i;
           	$o = $c;

           	if ( $c + strlen( $i ) == $l ) {
                   	//Evita que o loop continue caso a posição do elemento somado ao
                   	//seu comprimento seja igual ao tamanho do texto.
                   	break;
           	}
   	}
}

if ( $o != -1 ) {
   	echo 'Foi encontrado ' , $p , ' em ' , $o;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você ainda pode fazer o seguinte ajusta de otimização:

 

Da hora João, brigado pela força

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.