Ir para conteúdo

POWERED BY:

Arquivado

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

Diego Rodriguez

[Resolvido]  sobre o comando strpos

Recommended Posts

Bom gente, estou estuando PHP com MYSQL, ja consegui fazer o comando que o DW gera, mas eu nao quero ficar preso a nenhum programa e uso somente por ser mais pratico e nao precisar ficar digitando, mas gosto de saber e entender oque ele esta fazer e a minha duvida é entender o que o strpos faz na função abaixo:

 

 

CODE

$insertGoTo = "manuReboquescomissaofechadapagamento.php";

if (isset($_SERVER['QUERY_STRING'])) {

$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";

$insertGoTo .= $_SERVER['QUERY_STRING'];

}

header(sprintf("Location: %s", $insertGoTo));

 

o comando header eu ja entendi, so nao entendi a parte do srtpos...

 

Obrigado quem puder ajudar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

 

Bom..... A função strpos retorna a posição numérica da primeira ocorrência de needle dentro de haystack. Diferentemente de strrpos(), esta função pode ter uma string inteira como o parâmetro needle e toda a string será usada.

 

If needle não for encontrado, strpos() irá retornar boolean FALSE.

 

Atenção: Esta função pode retornar o booleano FALSE, mas também pode retornar um valor não-booleano que pode ser avaliado como FALSE, como 0 ou "". Utilize o operador === para testar o valor retornado por esta função.

 

Exemplo 1. Exemplos strpos()

 

<?php

$mystring = 'abc';

$findme = 'a';

$pos = strpos($mystring, $findme);

// Note o uso de ===. Simples == não funcionaria como esperado

// por causa da posição de 'a' é 0 (primeiro) caractere.

if ($pos === false) {

echo "A string '$findme' não foi encontrada na string '$mystring'";

} else {

echo "A string '$findme' foi encontrada na string '$mystring'";

echo " e existe na posição $pos";

}

?>

 

Se o parâmetro needle não é uma string, é convertido para um inteiro e aplicado o valor do caractere.

 

O parâmetro opcional offset permite a você definir a partir de qual caractere em haystack iniciar a busca. A posição retorna ainda é relativa ao inicio de haystack.

 

Este codigo pode ser usado em (PHP 3, PHP 4 , PHP 5)

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom gente, estou estuando PHP com MYSQL, ja consegui fazer o comando que o DW gera, mas eu nao quero ficar preso a nenhum programa e uso somente por ser mais pratico e nao precisar ficar digitando, mas gosto de saber e entender oque ele esta fazer

É ótimo ler isso! :D

É sewmpre bom deter o controle sobre o código; saber exatamente o que cada parte faz. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

 

Veja a documentação de strpos():

http://br.php.net/strpos

 

Essa função retorna a posição do caractere buscado ou zero, caso ele não conste na string. O strpos() está no operador ternário, que é um If/Else em uma linha. Veja:

http://br.php.net/manual/pt_BR/language.op....comparison.php

 

Ou seja, a linha do strpos() faz o seguinte:

1. Verifica se a string contém o caractere "?"

2. Se sim, adiciona o "&", já que não pode haver dois "?"

3. Senão, adiciona o "?"

 

 

Sucesso nos estudos e continue querendo entender cada linha dos códigos! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

[]s

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado galera pela ajuda e Beraldo, sua explicação me deixou super claro oq ele esta fazendo, voce poderia comentar cada linha para eu entender perfeitamente, se nao for pedir muito, teria como comentar cada "." cada "?" IuHAuhAUhUHA, falow gente muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

e Beraldo, sua explicação me deixou super claro oq ele esta fazendo, voce poderia comentar cada linha para eu entender perfeitamente

Claro. Here We Go! :lol:

 

Aqui é simplesmente uma atribuição. O fato de não haver o ponto de interrogação (?) no link é relevante, já que isso será verificado mais adiante, com strpos()

$insertGoTo = "manuReboquescomissaofechadapagamento.php";

A variável $_SERVER['QUERY_STRING'] armazena todo o conteúdo após o ponto de interrogação na URL. Se não me engano, essa variável sempre existe. Quando não há query string, o valor dela é vazio. Por isso, acho que a parte em negrito deveria ser adicionada ao seu código:

if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') {

Esta parte concatena um valor (? ou &). Se houver "?" na string, adiciona "&"; senão, adiciona "?".

$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";

Aqui é adicionado o valor de $_SERVER['QUERY_STRINBG'] à string. Em seguida, fecha-se o IF

$insertGoTo .= $_SERVER['QUERY_STRING'];
}

Aqui vem o header(), que você disse já ter entendido. :)

header(sprintf("Location: %s", $insertGoTo));

 

Espero que tenha ficado tudo esclarecido. :D

 

[]s

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

e Beraldo, sua explicação me deixou super claro oq ele esta fazendo, voce poderia comentar cada linha para eu entender perfeitamente

Claro. Here We Go! :lol:

 

Aqui é simplesmente uma atribuição. O fato de não haver o ponto de interrogação (?) no link é relevante, já que isso será verificado mais adiante, com strpos()

$insertGoTo = "manuReboquescomissaofechadapagamento.php";

A variável $_SERVER['QUERY_STRING'] armazena todo o conteúdo após o ponto de interrogação na URL. Se não me engano, essa variável sempre existe. Quando não há query string, o valor dela é vazio. Por isso, acho que a parte em negrito deveria ser adicionada ao seu código:

if (isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') {

Esta parte concatena um valor (? ou &). Se houver "?" na string, adiciona "&"; senão, adiciona "?".

$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";

Aqui é adicionado o valor de $_SERVER['QUERY_STRINBG'] à string. Em seguida, fecha-se o IF

$insertGoTo .= $_SERVER['QUERY_STRING'];
}

Aqui vem o header(), que você disse já ter entendido. :)

header(sprintf("Location: %s", $insertGoTo));

 

Espero que tenha ficado tudo esclarecido. :D

 

[]s

Beraldo

 

 

Beraldo, entendi agora perfeitamente, muito obrigado por sua consultoria e por sua paciencia ! hehehe show de bola, muito obrigado professor !!! =D

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.