PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   txt-Datei einlesen und String ausgeben (http://www.selfphp.de/forum/showthread.php?t=24900)

fmnix 18.03.2013 20:26:32

txt-Datei einlesen und String ausgeben
 
Hallo an alle ;-) !

Ich möchte eine txt-Datei einlesen, diese nach einem String ";+ -" durchsuchen und die Zeile in der dieser String vorkommt sowie die folgenden 4 Zeilen ausgeben.

Hier mein Versuch:

PHP-Code:

<?php
$lines 
file('http://www.webseite.com/test/test.txt');
$searchstr ';+ -';
foreach (
$lines as $line)
{
  if(
strpos($line$searchstr) !== false)
  {
    
$results[] = $line;
  }
}
echo 
'<pre>';
print_r($results);
echo 
'</pre>';
?>


Die txt-Datei sieht z.B. so aus:

Code:

;*+-aaaaaa
bbbbb
ccccccc
ffff
asfasfasfafafaf
sdgsdgsgs
gsgsgsgsdgsd235235fs
sgsgsgsgsg
;+ - 2222222222aaaaaa
bbbbb
cccccccgggg
gsgsdgsdg

Wie aber schaffe ich es, dass nicht nur die erste Zeile, sondern eben auch die folgenden 4 Zeilen ausgegeben werden?

Danke schon jetzt für eure Mühe!

Ckaos 19.03.2013 09:03:51

AW: txt-Datei einlesen und String ausgeben
 
Hi

PHP-Code:

<?php
$lines 
file('http://www.webseite.com/test/test.txt');
$searchstr ';+ -';
$next_lines 0;
foreach (
$lines as $line)
{
  if(
strpos($line$searchstr) !== false || ($next_lines>&& $next_lines<5))
  {
    
$results[] = $line;
    
$next_lines++;
  }
  
//Falls es weitere Zeilen geben sollte ;)
  
if($next_lines==5){
     
$next_lines=0;
  }
}
echo 
'<pre>';
print_r($results);
echo 
'</pre>';
?>

ungetestet!

mfg

CKaos

fmnix 02.04.2013 16:38:43

AW: txt-Datei einlesen und String ausgeben
 
Hey VIELEN Dank! Funktioniert super!

Sorry für die späte Antwort...

Ich bin soweit gekommen, habe aber am Wochenende etwas Zeit (Dank an den Osterhasen) gehabt und finde DEINE Lösung um einiges besser und übersichtlicher.

Der Vollständigkeit halber mein Lösungsweg:

PHP-Code:

<?php
$lines 
file('http://www.abdce.de/test/test.txt');
$searchstr ';+ -';

$k 0;
for (
$i 0$i sizeof($lines); $i++)
{
// k groesser 0 und kleiner 4
if (0)
{
$results[] = $line;
}

if(
strpos($line$searchstr) !== false)
{
$results[] = $line;
$k++;
}
if (
$k == 4)
{
$k 0;
}
}

echo 
'<pre>';
print_r($results);
echo 
'</pre>';
?>

Vielen Dank noch einmal! Werde mich gleich mit einer Ergänzung melden ;-)

fmnix 02.04.2013 16:56:49

AW: txt-Datei einlesen und String ausgeben
 
So, da bin ich auch schon wieder ;-) !

Folgende zwei Möglichkeiten wären jetzt noch klasse... und zwar:

1. Wie lese ich z.B. immer die ersten 15 Zeilen einer Datei ein und gebe diese als "Kopf" vor den restlichen Daten aus?

und

2. Aktuell gebe ich ja alle Zeilen, die mit ";+ -" beginnen aus. Wie kann ich nach jeder Zeile eine Zeile mit folgendem Inhalt ausgeben - z.B.: "abcd_____1234 qwer----"

Beispiel - aktuell:
;+ - Ich bin ein Text
;+ - ...und ich auch
;+ - und hier ist noch viel mehr
;+ - ja... und jetzt wirds nervig ;-)

Beispiel NACH Änderung:
;+ - Ich bin ein Text
abcd_____1234 qwer----
;+ - ...und ich auch
abcd_____1234 qwer----
;+ - und hier ist noch viel mehr
abcd_____1234 qwer----
;+ - ja... und jetzt wirds nervig ;-)
abcd_____1234 qwer----


Ich hoffe meine Infos sind nicht zu verwirrend und verständlich.

Vielen Dank vorab an alle die sich die Mühe machen hier vorbeizuschauen ... Danke auch nochmal an Ckaos

:)

fmnix 03.04.2013 11:25:10

AW: txt-Datei einlesen und String ausgeben
 
Hi!

Also den ersten Punkt bezüglich der Ausgabe des "Datei-Kopfes" mit den 15 Zeilen habe ich hinbekommen - hier der Code für alle die es interessiert:

PHP-Code:

$thisFileContent file("pfad-zu-txt-datei/blabla.txt"); 
for(
$i=0$i<16$i++){
   echo 
$thisFileContent[$i]; 


Aber wie kann ich jetzt nach jeder Zeile folgendes Ausgeben:

" abcd_____1234 qwer----"

Hmm...

Ckaos 03.04.2013 11:50:47

AW: txt-Datei einlesen und String ausgeben
 
Hi,

wenn ich die Frage richtig verstehe einfach so :?
PHP-Code:

<?php
$lines 
file('http://www.abdce.de/test/test.txt');
$searchstr ';+ -';

$k 0;
for (
$i 0$i sizeof($lines); $i++)
{
// k groesser 0 und kleiner 4
if (0)
{
$results[] = $line;//Hier fehlt doch welche line oder?
}

if(
strpos($line$searchstr) !== false)
{
$results[] = $line;//und hier doppelt?
$k++;
}
if (
$k == 4)
{
$k 0;
}
$results[] = " abcd_____1234 qwer----";
}

echo 
'<pre>';
print_r($results);
echo 
'</pre>';
?>

mfg

CKaos

fmnix 03.04.2013 12:57:08

AW: txt-Datei einlesen und String ausgeben
 
Ahh cool , Danke!


ABER Deine Lösung finde ich besser, habe bei deinem Code jetzt folgendes hinzugefügt:

PHP-Code:

  {   
    
$results[] = $line '<pre>' .  ' abcd_____1234 qwer----' '<pre>'
    
$next_lines++; 
  } 

Ist doch auch OK - oder? Zumindest funktioniert es ;)

Schaue jetzt noch wie ich die Ausgabe OHNE "Array" machen kann, also ohne "print_r"... da die Infos wie "
Array
(
[0] =>"
...

wenig interessieren...

fmnix 03.04.2013 13:10:53

AW: txt-Datei einlesen und String ausgeben
 
Also die Punkte funktionieren soweit > ich als php-Anfänger bin zumindest sehr zufrieden :) .

Interessant wäre jetzt noch folgendes als Ergänzung zu DEINEM Script:

Aktuell werden ja nach jedem gefunden ";+ -" die folgenden 4 Zeilen ausgegeben.
Wie kann ich aber folgendes realisieren:

Ich möchte nur die zeile mit ";+ -" ausgeben, und NUR wenn am Zeilen-Ende ein "---" erscheint auch die folgende Zeile...

Also NICHT immer pauschal alle 4 Zeilen ab ";+ -".

Je länger ich hier etwas übe, desto bekloppter werden meine Ideen ;) ...

Danke für deine Mühe und Geduld Ckaos

fmnix 03.04.2013 13:33:11

AW: txt-Datei einlesen und String ausgeben
 
Zitat:

Zitat von fmnix (Beitrag 144781)
Schaue jetzt noch wie ich die Ausgabe OHNE "Array" machen kann, also ohne "print_r"... da die Infos wie "
Array
(
[0] =>"
...

wenig interessieren...

Ist folgender Code "sauber" programmiert? Es Funktioniert auf jeden Fall, aber ich möchte wissen ob das auch OK so ist ;) :

ALTE Ausgabe:

PHP-Code:

echo '<pre>'
print_r($results); 
echo 
'</pre>'

NEUE Ausgabe:

PHP-Code:

$anzahl count($results);
for(
$i=0$i<$anzahl$i++){    
echo 
'<pre>'
print_r($results[$i]); 
echo 
'</pre>'



fmnix 04.04.2013 15:33:49

AW: txt-Datei einlesen und String ausgeben
 
So... nur für den Fall das der letzte, offene Punkt hier im Thread übersehen wird ;-) :

Was muss hier ergänzt werden:

PHP-Code:

$lines file('http://www.webseite.com/test/test.txt');
$searchstr ';+ -';
$next_lines 0
foreach (
$lines as $line)
{
  if(
strpos($line$searchstr) !== false || ($next_lines>&& $next_lines<5))
  {
    
$results[] = $line;
    
$next_lines++;
  }
  
//Falls es weitere Zeilen geben sollte ;)
  
if($next_lines==5){
     
$next_lines=0;
  }


Aktuell werden ja nach jedem gefunden ";+ -" die folgenden 4 Zeilen ausgegeben.
Wie kann ich aber folgendes realisieren:

Ich möchte nur die zeile mit ";+ -" ausgeben, und NUR wenn am Zeilen-Ende ein "---" erscheint auch die folgende Zeile, bis kein "---" mehr am Zeilenende steht.

Also NICHT immer pauschal alle 4 Zeilen ab ";+ -".

Bin schon fleißig am "wurschteln" aber als Anfänger doch leicht überfordert... Danke für die Hilfe ;-) !


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:27:31 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.