Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

PHP - Pesquisar o numero de uma chave de um array importado de um file

Olá, Utilizei a função file() para carregar para um array um arquivo .txt, agora estou tentando identificar qual é a chave deste array que contém um texto específico utilizando array_search, mas não esta retornando nada. O que estou fazendo de errado? Abaixo disponibilizo parte do arquivo txt e parte do meu código:

teste.txt:

Teste de linha xxxxxxxx
2 teste ------------------
linha 3 yyyyyyyyyyyyyyyy
final do texto --------------

código php:

<?php
$dados = file('teste.txt');
$key = array_search('2 teste ------------------', $dados);
var_dump($key);
?>
4 respostas

Oi Andrei, tudo bom?

Verifica o que está sendo retornado da função file:

$dados = file('teste.txt');
var_dump($dados);die();

Verifica se a função está retornando false. Segundo a documentação quando rola algum problema esse é o valor retornado.

Caso esse seja o retorno, da uma verificada no caminho do seu arquivo teste.txt.

O ideal é garantir o caminho todo até o arquivo, algo como:

mac os/linux
/Users/seuUsuario/Desktop/nomeDoProjeto/teste.txt

windows
C:\Users\seuUsuario\Desktop\nomeDoProjeto\teste.txt

Você pode pegar o caminho relativo até o projeto também pelas constantes mágicas como o __DIR__ que te retorna o caminho absoluto até o arquivo no qual a constante é executada.

Com ele você pode navegar mais fácilmente dentro do projeto com o caminho absoluto, independente da máquina ou sistema operacional em que o script esteja sendo executado =)

Boa tarde, descobri que meu problema é outro. Por isso vou expandir meu problema. seguinte: Tenho um arquivo txt que eu jogo todo em um array dentro de uma variável, com o comando:

$dados = file($arquivo_temp);

Em uma das posições deste array há uma frase com uma palavra que procuro (não sei qual é a frase completa, apenas uma palavra), onde preciso saber qual é a posição que ela esta. Então coloco um while conforme abaixo:

while (list($key, $value) = each($dados)) {
...
}

Agora vem meu problema: Preciso encontrar uma palavra, dentro de uma frase que não conheço, que esta dentro de uma posição do array que não sei qual é. Como estou procurando parte do conteúdo de uma posição do array, não posso fazer:

$search = "palavra";
if($value == $search){
    echo $key;
}

Tentei com preg_match, mas não deu também:

$search = "palavra";
if(preg_match($search, $dados)){
    echo $key;
}

Tentei usando:

$search = '/palavra/';

E também:

$search = "palavra";
if(preg_match("%\b{$search}\b%", $dados)){
    echo $key;
}

Fiquei sem idéias. E agora? Muito obrigado!

solução!

Cometi um erro no código: Ao invés de escrever assim:

$search = "palavra";
while (list($key, $value) = each($dados)) {
   if(preg_match($search, $dados)){
       echo $key;
   }
}

Tinha que ter escrito assim:

$search = "palavra";
while (list($key, $value) = each($dados)) {
   if(preg_match($search, $value)){
       echo $key;
   }
}

Agora foi! Obrigado pela atenção!

Boa Andrei! As vezes os detalhes passam msm =)

Obrigado por compartilhar sua solução aqui com a gente.

Abraço!