Ir para conteúdo

POWERED BY:

Arquivado

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

Leansantana

Carregar Txt Php

Recommended Posts

Prezados,

Quero carregar um .txt, com as seguintes características :

{11//

Id={CE26280B-3223-45A3-8B13-5051D5182AAE}
Name=DEPARTAMENTOS 1-2
//11}
Mais eu quero pegar somente o que vem depois do " = " e salvar no meu mysql.
Como faço isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
$data = "{11//Id={CE26280B-3223-45A3-8B13-5051D5182AAE}Name=DEPARTAMENTOS 1-2//11}";
list($um, $dois, $tres) = explode("=", $data);
echo $data;
echo "<br>".$um."<br>"; // foo
echo $dois."<br>";
echo $tres."<br>";
?>

Lean, somente usar explode, função do php!

Veja se isso que vc precisa, depois posta aí!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Domenike, a sugestão foi bem vinda. Mais ainda não é o que quero.. O algorítimo é esse:

Carrego o .txt $.POST['arquivo];

preciso percorrer o aquivo, para ignorar o inicio : ' {11// ' ; Puxar somente o que vier depois do " = " ; Detectar quando um novo quando tiver " //11} "

{11//

Id={CE26280B-3223-45A3-8B13-5051D5182AAE}
Name=DEPARTAMENTOS 1-2
//11}

Compartilhar este post


Link para o post
Compartilhar em outros sites

$array = file("arquivo.txt");

$tamanho = sizeof($array);

for ($i = 0; $i <= $tamanho; $i++) {

$data = $array[$i];
list($um, $dois, $tres) = explode("=", $data);;
echo "<br>Bloco um: ".$um."<br>"; // foo
echo "<br>Bloco dois: ".$dois."<br>";

echo "<br>Bloco tres: ".$tres."<br>";

}

Acabei de criar, texta aí!! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele não ignorou {11//

Id={CE26280B-3223-45A3-8B13-5051D5182AAE}
Name=DEPARTAMENTOS 1-2
//11}
Tenho que ignora-los.. E não quero os nomes tipo : " Id ", "Name" , só o que vier depois do " = " Só falta isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para ignorar é só fazer um if usando strstr também, como sugeri no começo. Se strstr retornar algo diferente de false, é porque a string está presente. Ou seja, ignore-a e leia a próxima linha do arquivo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo, como ficaria o IF com SUBSTR aqui dentro :

$array = file("arquivo.txt");

$tamanho = sizeof($array);

for ($i = 0; $i <= $tamanho; $i++) {

$data = $array[$i];
list($um, $dois, $tres) = explode("=", $data);;
echo "<br>Bloco um: ".$um."<br>"; // foo
echo "<br>Bloco dois: ".$dois."<br>";

echo "<br>Bloco tres: ".$tres."<br>";

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usa str_replace do php, substiuindo o que você deseja por "" (vazio)


  1. <?php
  2. $string = "substitua o que esta entre as aspas simples 'php'";
  3. $nova = str_replace('php', 'Paolla_Oliveira', $string);
  4. var_dump($nova);
  5. // Resultado "substitua o que esta entre as aspas simples 'Paolla_Oliveira'"
  6. ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A melhor forma de fazer isso é utilizando expressões regulares. Expressões regulares permitem identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padrões de caracteres.

 

A função que queres utilizar é "preg_match_all" que vai encontrar todas as ocorrências da string.

 

Por exemplo para encontrar endereços de email dentro de um texto utilizavas a seguinte expressão:

 

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Sousa, concordo plenamente.

Mas expressões regulares é pouco mais complicada e nosso amigo está começando!

Se ele familiarizar com as funções prontas do PHP já é um bom começo, depois ele pegará fácil fr.

Programação no começo é complicado para td mundo, depois melhora! :) rsrs

Abç

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo, como ficaria o IF com SUBSTR aqui dentro :

não é substr, é strstr

 

Basta algo assim:

if ( strstr( $linha, '{11//' ) !== false || strstr( $linha, '//11}' ) !== false )
{
        // ignora a linha atual, pois possui {11// ou //11}
}

considere que $linha possui a linha atual do arquivo

 

Veja a documentação de strstr para mais detalhes

 

 

Concordo com o uso de ERs. Elas facilitariam bastante o trabalho. É algo mais complexo, mas que vai ajudar em várias situações

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo no caso ficaria assim

<?php
$array = file("C:/teste/teste.txt");
$tamanho = sizeof($array);
for ($i = 0; $i <= $tamanho; $i++) {
$data = $array[$i];
if ( strstr( $data , '{11//' ) !== false || strstr( $data , '//11}' ) !== false ){;
$data = $array[$i];
$dados[$i] = explode("=", $data);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

postei errado antes.

na verdade é AND, não OR. Pois a string não pode conter {11// E não pode conter //11}

 

O if correto é:

 

if ( strstr( $data , '{11//' ) !== false && strstr( $data , '//11}' ) !== false ){

 

obs: retire o ponto-e-virgula do final da linha do seu if

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.