Ir para conteúdo

POWERED BY:

Arquivado

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

guhfloripa

codigo nao funciona mais que 5 vezes :(

Recommended Posts

Estou tentando fazer uma funcao para varrer uma string.

Por exemplo, ele encontra a terceira posicao de uma string, depois a quarta posicao de uma string e assim por diante.

 

Eu vi um codigo na internet, porem ele trava na 3 posicao em diante.

 

function strposOffset($search, $string, $offset)
{
   /*** explode the string ***/
   $arr = explode($search, $string);
   /*** check the search is not out of bounds ***/
   switch( $offset )
   {
       case $offset == 0:
       return false;
       break;

       case $offset > max(array_keys($arr)):
       return false;
       break;

       default:
       return strlen(implode($search, array_slice($arr, 0, $offset)));
   }
}

 

 

 

Exemple usage:

 

<?php

/*** the third occurance ***/
$offset = 3;

/*** the string to search for ***/
$search = 'is';

/*** the string to search ***/
$string = 'this is not a love song, this is not a love song';

echo strposOffset($search, $string, $offset);
?>

 

Alguem pode me dizer pq q ele ta repetindo da terceira posicao em diante? Eu preciso usar isso umas 20x.

 

fonte do codigo: acima

Find the second (or third, or fourth) occurence in a string

Compartilhar este post


Link para o post
Compartilhar em outros sites

para usar expressões ternárias nas condições "case", é necessário especificar o resultado esperado, o qual é booleano TRUE ou FALSE.

 

expressões ternárias

$offset == 0

$offset > max(array_keys($arr))

 

 

switch( $offset )

troque por :seta:

switch( TRUE )

 

 

 

possível correção:

 

    switch( TRUE )
   {
       case ($offset == 0):
       return false;
       break;

       case ($offset > max( array_keys( $arr ) ) ):
       return false;
       break;

       default:
       return strlen( implode( $search, array_slice( $arr, 0, $offset ) ) );
       break;
   }

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.