Jump to content

dividir ficheiro de texto


Anonym

Recommended Posts

Boas, eu num ficheiro txt tenho isto:

<mensagem> ABC , DEF </mensagem><mensagem> GHI , JLM </mensagem><mensagem> NOP , QRS </mensagem>

e eu cria num script de php que fizesse o seguinte

• lia o ficheiro

• metia cada parte de <mensagem></mensagem> numa linha de uma tabela

• fosse possível eliminar uma certa parte, ou seja um <mensagem></mensagem>

e o que eu tenho feito usuamente para este tipo de projectos, é armazenar o texto num txt (como agora) e o php lia o ficheiro todo, fazia include. Mas agora por termos estéticos gostava de aprender (se der) a dividir o texto, porque o alojamento de texto não deixa mail() nem db's my_sql...

cumps,  😄

Link to comment
Share on other sites

Está aqui a solução para o teu problema:

<?php
$ficheiro = "teste.txt";
if(file_exists("$ficheiro")) {
header("Content-Type: text/plain");
$a=file($ficheiro);
if(!empty($a)){
$b=explode('<mensagem>',$a[0]);
foreach($b as $c){
$d=explode('</mensagem>',$c);
echo $d[0]."\n";
  }                                                                                                                                         
  }
}
?>

Eu testei e funcionou...

O meu aquivo teste.txt tinha isso:

<mensagem>isto é um teste</mensagem><mensagem>isto é um teste também</mensagem><mensagem>isto é outro teste ...</mensagem>

e quando executei o meu código só mostrou:

isto é um teste

isto é um teste também

isto é outro teste ...

Acho que é isso que queres!!

Link to comment
Share on other sites

Está aqui a solução para o teu problema:

<?php
$ficheiro = "teste.txt";
if(file_exists("$ficheiro")) {
header("Content-Type: text/plain");
$a=file($ficheiro);
if(!empty($a)){
$b=explode('<mensagem>',$a[0]);
foreach($b as $c){
$d=explode('</mensagem>',$c);
echo $d[0]."\n";
  }                                                                                                                                         
  }
}
?>

Eu testei e funcionou...

O meu aquivo teste.txt tinha isso:

<mensagem>isto é um teste</mensagem><mensagem>isto é um teste também</mensagem><mensagem>isto é outro teste ...</mensagem>

e quando executei o meu código só mostrou:

isto é um teste

isto é um teste também

isto é outro teste ...

Acho que é isso que queres!!

segundo o que percebi desse código.... Ele esconde o <mensagem></mensagem> e acrescenta um \n...

mas o que eu cria no fundo era, em cada linha de uma tabela ter uma mensagem...

:\

Link to comment
Share on other sites

Bem para isso só tens de criar a tabela.

Esse código já faz tudo agora metes-lhe a tabela.

<table border="1">
<?php
$ficheiro = "teste.txt";
if(file_exists($ficheiro)) {
header("Content-Type: text/plain");
$a=file($ficheiro);
if(!empty($a)){
	$b=explode('<mensagem>',$a[0]);
	foreach($b as $c){
		$d=explode('</mensagem>',$c);
		echo "<tr><td>".$d[0]."</td></tr>";
	}                                                                                                                          
}
}
?>
</table>
Link to comment
Share on other sites

grava em xml e para n teres o trabalho de aprender a ler ficheiros xml com php saca uma classe que te faça isso e ja esta...

A questão não está em gravar em XML mas sim em colocar os dados numa estrutura XML.

O SAX aqui cai muito bem, muito melhor que o DOM.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Bem para isso só tens de criar a tabela.

Esse código já faz tudo agora metes-lhe a tabela.

<table border="1">
<?php
$ficheiro = "teste.txt";
if(file_exists($ficheiro)) {
header("Content-Type: text/plain");
$a=file($ficheiro);
if(!empty($a)){
	$b=explode('<mensagem>',$a[0]);
	foreach($b as $c){
		$d=explode('</mensagem>',$c);
		echo "<tr><td>".$d[0]."</td></tr>";
	}                                                                                                                          
}
}
?>
</table>

Está aqui a solução para o teu problema:

<?php
$ficheiro = "teste.txt";
if(file_exists("$ficheiro")) {
header("Content-Type: text/plain");
$a=file($ficheiro);
if(!empty($a)){
$b=explode('<mensagem>',$a[0]);
foreach($b as $c){
$d=explode('</mensagem>',$c);
echo $d[0]."\n";
  }                                                                                                                                         
  }
}
?>

Eu testei e funcionou...

O meu aquivo teste.txt tinha isso:

<mensagem>isto é um teste</mensagem><mensagem>isto é um teste também</mensagem><mensagem>isto é outro teste ...</mensagem>

e quando executei o meu código só mostrou:

isto é um teste

isto é um teste também

isto é outro teste ...

Acho que é isso que queres!!

era isso mesmo, muito obrigado!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.