Bom, deu pra entender? ou entendeu sem dar? ;)
O meu problema era o seguinte, tenho um sistema de cadastro público mas alguns engraçadinhos gostavam de postar coisas bobas do tipo odeio fulano, ciclano é chato, etc. Então tinha que filtrar essa string, so que a função do PHP strpos só nos dá a opção de encontrar apenas uma palavra. Solução? Criei uma array, depurei chegando cada uma e pronto, se encontrar umas das palavras da array ele me retorna 1, não encontrou retorna 0.
Bom, a função esta abaixo para quem quiser:
// Função para procura várias palavras em uma string
function procpalavras ($frase, $palavras, $resultado = 0) {
foreach ( $palavras as $key => $value ) {
$pos = strpos($frase, $value);
if ($pos !== false) { $resultado = 1; break; }
}
return $resultado;
}
// Exemplo 1 - Nenhuma palavra encontrada, retorna zero
$frase = "eu tenho uma galinha que se chamava merilu";
$palavras = array ("coelho","cavalo","formiga","cachorro","gato");
echo "Resultado: " . procpalavras($frase, $palavras) . "
";
// Exemplo 2 - Uma ou mais palavra encontrada, retorna um
$frase = "eu tenho um coelho que se chamava zé";
$palavras = array ("coelho","cavalo","formiga","cachorro","gato");
echo "Resultado: " . procpalavras($frase, $palavras) . "
";
Gostou? Comenta… Não gostou? Comenta também…
20 comments
Parece-me interecante, ainda nao tive tempo de experimenta-la
mas tbm estive tentando fazer algo do genro pro meu Web-site(ainda em dznvlvimento).
Assim k tiver resultados mostrovos.
Beleza Dario,
depois manda o link ae! :) Se tiver alguma dúvida ou precisar de algo.. pode contar comigo!
o,eu queria saber como procurar palhavas na uol,alguém sabe como?
Kra, ótima matéria, eu usei este script para descobrir o browser do usuario e a partir dai fazer determinada coisa, fiz algumas poucas adaptações para poder fazer o que eu queria, apesar de ter isto com javascript prefiro fazer com php no meu caso se enquadrou melhor, para quem quizer aki vai como ficou o script.
// Função para procura várias palavras em uma string
function procpalavras ($frase, $palavras, $resultado = 0) {
foreach ( $palavras as $key => $value ) {
$pos = strpos($frase, $value);
if ($pos !== false) { $resultado = 1; break; }
}
return $value;
}
$palavras = array (“Chrome”,”Firefox”,”MSIE”);
$nav = getenv(“HTTP_USER_AGENT”);
echo “Resultado: ” . procpalavras($nav, $palavras) . “”;
Vlw um abraço..
Valeu cara !
Fiz o teste e deu certo !!
Muito obrigado
Obrigado!
Boa noite…
Preciso de uma ajuda…
Existe uma maneira de buscar vários registros de uma vez, digitando os códigos em uma textarea?
Ou seja, tenho vários usuários e quero listar os usuários 1, 2, 4, 7… etc
Na textarea teria que ser um em baixo do outro pois estes números serão copiados do Excel
1
2
4
7
Peço uma ajuda e agradeço desde já.
Carlos, essa questão é relativamente simples. Use 3 comandos. O primeiro é na hora de receber os valores da textarea, use a função nl2br para colocar o como quebra de linha. Depois use a funcao explode, delimitado pelo para colocar as linhas em uma array. Depois é so usar o foreach para utilizar cada linha recuperada.
Meu problema é parecido, mas eu tenho a seguinte situação: O usuário digita uma equação matemática ex:(sin(60 + x1*x2). A função vai calcular como código do php, mas para isso eu preciso converter x1 e x2 em variáveis válidas do php. Como o usuário pode usar qualquer nome para uma variável, eu preciso verificar na equação digitada por ele todas as palavras que não são funções ou palavras reservadas e acrescentar o $ na frente. Para isso eu armazeno essas palavras em um array, mas aí como identificar as variáveis na string?
Cristiano, é so usar o $$variavel … assim o $variavel seria o nome da variavel. Entendeu?
muito bom valew mesmo!
Para aqueles que querem que o retorno da função seja a palavras encontradas, segue uma pequena alteração:
function procpalavras ($frase, $palavras, $resultado = 0) {
foreach ( $palavras as $key => $value ) {
$pos = strpos($frase, $value);
if ($pos !== false) {
$palavras_encontradas[] = $value; }
}
$palavras_encontradas = implode(“, “,$palavras_encontradas);
return $palavras_encontradas;
}
$frase = “eu tenho um coelho que se chamava zé”;
$palavras = array (“coelho”,”eu”,”formiga”,”cachorro”,”gato”);
echo procpalavras($frase, $palavras);
Resultado:
coelho, eu
Deixei a funcao do post mais bonita e rapida, segue abaixo:
function ArrayinStr($palavras, $frase) {
foreach ($palavras as $key => $value)
if (strstr($frase, $value) !== false) { $resultado = true; break; }
return $resultado;
}
Deixei a funcao do post mais bonita e rapida, segue abaixo:
function ArrayInStr($frase, $palavras) {
foreach ($palavras as $chave => $palavra)
if (strstr($frase, $palavra) !== false) { $resultado = true; break; }
return $resultado;
}
Poxa, muito obrigado.. essa funcao me salvou.. procurei procurei e até que encontrei essa funcao! perfeita pro meu uso. muito obrigado!
Muito boa, estava tentando fazer com array_keys_exists mas esta é bem melhor.
Parabéns!!!
Olá uma ajudinha como faço o mesmo com um arquivo txt
Abraço.
Muito boa função. Obrigado! Uso constantemente em minha loja. Exemplo: https://ecorde.com.br/espaleira-bon-musica-violino-44/avaliacao/585
Funcionando no PHP 7.4
Muito bom mano ! ótima ideia e obrigado por compartilhar !