Ir para conteúdo

POWERED BY:

Arquivado

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

Alessandro Souza

[Resolvido] Encontrar posição de uma string a partir de uma certa

Recommended Posts

Olá bom dia gostaria de saber como que faço para encontrar a posição de uma string depois de encontrar a posição de uma determinada tag. Exmplo:

 

<?php 

 $texto = "<td> Olá, testando </td> <td> Olá, 123 </td>";
 $posicaoTd = strpos($texto ,'<td>');
 #acima encontro a primeira posição de <td>

?>

 

agora como encontro a posicao do proximo </td> a apartir do primeiro <td> que encontrei.???

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pode ser feito com strpos e substr. Eu tenho um algoritmo pronto pra você.

Ele varre a variável $var para encontrar o conteúdo que está definido entre $stringInicial e $stringFinal. No seu caso, '<td>' e '</td>'

 

Use-o como quiser

 


$var = 'texto aonde você quer pegar o conteúdo';
$stringInicio = '<td>';
$stringFinal = '</td>';

//sempre inicia com 0
$final = 0;
//Retorna a posição do primeiro <td> à partir da posição que encontrou o último </td>. 
//Caso for a primeira vez, inicia de 0 conforme declarado em $final
while( $inicial = strpos( $var, $stringInicio, $final )  ) {
  //Procura o primeiro '</td>' após '<td>
  $final = strpos( $var, $stringInicio, $inicial );  

  //retira o conteúdo entre as tags <td> e </td>  
  //você pode usar o conteudo como quiser
  $string = substr( $var, ( $inicial + strlen( $stringInicial ) ), ( $final - $inicial + strlen( $stringFinal ) ) );


  }
}

 

Isso resolve no meu caso, talvez tenha que adaptar um pouco pro seu uso, mas o código 'bruto' está ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentei usar Regex , mais não deu certo eu precisava pegar todo conteúdo do começo do <table> até o final dele </table> , então pensei achar o primeiro <table> e pegar toda substr até achar o final dele.

 

Pode ser feito com strpos e substr. Eu tenho um algoritmo pronto pra você.

Ele varre a variável $var para encontrar o conteúdo que está definido entre $stringInicial e $stringFinal. No seu caso, '<td>' e '</td>'

 

Use-o como quiser

 


$var = 'texto aonde você quer pegar o conteúdo';
$stringInicio = '<td>';
$stringFinal = '</td>';

//sempre inicia com 0
$final = 0;
//Retorna a posição do primeiro <td> à partir da posição que encontrou o último </td>. 
//Caso for a primeira vez, inicia de 0 conforme declarado em $final
while( $inicial = strpos( $var, $stringInicio, $final )  ) {
  //Procura o primeiro '</td>' após '<td>
  $final = strpos( $var, $stringInicio, $inicial );  

  //retira o conteúdo entre as tags <td> e </td>  
  //você pode usar o conteudo como quiser
  $string = substr( $var, ( $inicial + strlen( $stringInicial ) ), ( $final - $inicial + strlen( $stringFinal ) ) );


  }
}

 

Isso resolve no meu caso, talvez tenha que adaptar um pouco pro seu uso, mas o código 'bruto' está ai

 

 

Gabriel Heming, gostaria de agradecer a você pelo código.. só tirei ele do while porque no meu caso não precisava e funcionou normalmente.

Obrigado Gente.

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.