Inhalt aus Texdatei auslesen und weiterverarbeiten

phpgut

Grünschnabel
Hallo, ich habe ein kleines Problem.

Vorhanden ist ein Script welches eine Seite aufruft mit einem Suchbegriff.

Die aufgerufene Seite wird per wget gespeichert, umbenannt und ausgelesen.
Wenn der Suchbegriff in der runtergeladenen Datei vorhanden ist, erfolgt eine Aktion.

Nun müsste das Script so arbeiten dass die Suchbegriffe aus einem Textdokument ausgelesen werden und nacheinander abgearbeitet werden.

Hatte mit einigen for each item Schleifen nur mässige Erfolge.

Hat jemand einen Rat?

lg

Das vorhandene Script:
PHP:
<?php 
$suchwort = "test";
//wget

     $url = "http://127.0.0.1/index.php?search=$suchwort";
     $file = "index.php?search=$suchwort";

     $esc = escapeshellarg($url);
     exec("wget " . $esc);
     
    //file umbenennen
     $ren = "mv $file $suchwort.xhtml";
     $ren = escapeshellcmd($ren);
     exec($ren,$nu);
     
    if (file_exists(''.$suchwort.'.xhtml')) {
    $xml = simplexml_load_file(''.$suchwort.'.xhtml');
    } else {
        exit('<br>Konnte die Datei nicht öffnen.');
    }

    // suchzeile definieren
    $title = $xml->e2event->e2eventtitle

    // wenn inhalt in suchzeile gefunden
    if($title == "" ) {
    echo 'Kein Inhalt gefunden mit Suchwort: <strong>'.$suchwort.'</strong>';
   
    } else {
    echo 'Inhalt gefunden mit Suchwort: <strong>'.$suchwort.'</strong><br>';
    echo $title;
   
    $mail = $_REQUEST["mail"];
    //
    if($mail == "1" ) {
    // nachricht senden
    mail("keine@web.de", "Betreff", "Inhalt.\n\n
    ",$headers);
    //
    echo '<br><br>Benachrichtung gesendet.';
    } else {
    // keine aktion
    echo '<br><br>Keine Benachrichtung gesendet.';
    }
   
    }
       
   //file loeschen
     $del = "rm $suchwort.xhtml";
     $del = escapeshellcmd($del);
     exec($del,$nu);
?>
 
Wie zeigt sich dein Mässiger Erfolg?

Bitte passendes ankreuzen

[ ] 1) Es kommt kein Fehler, er macht einfach nichts.
[ ] 2) Es kommt eine Fehlermeldung, doch sowas ignoriert mangekonnt.
[ ] 3) Der Code macht etwas, aber er macht es falsch

Bei 2) und 3) bitte genauere Angaben zu Wo und Was.

Zudem. Wo ist der foreach?
 
Hab den for each aus dem Codebeispiel wieder rausgenommen weil dieser nicht korrekt funktionierte also [ ] 3 : )

Das Script hat nur den ersten Begriff aus der Textdatei gesucht und gespeichert.

Und die Datei wird als index.php?search=test%0A statt index.php?search=test gespeichert und nicht weiterverarbeitet.

Die beiden Begriffe in der Datei test.txt stehen ohne Trennzeichen drin. Glaub aber nicht dass es daran hakt.


Hier das Script mit meinem kläglichen Versuch.
PHP:
<?php 
$suchwoerter = file("test.txt");
for($i=0;$i < count($suchwoerter); $i++){
   
//wget
     $url = "http://127.0.0.1/index.php?search=".$suchwoerter[$i]."";
     $file = "index.php?search=".$suchwoerter[$i]."";

     $esc = escapeshellarg($url);
     exec("wget " . $esc);
     
    //file umbenennen
     $ren = "mv $file ".$suchwoerter[$i].".xhtml";
     $ren = escapeshellcmd($ren);
     exec($ren,$nu);
     
    if (file_exists(''.$suchwoerter[$i].'.xhtml')) {
    $xml = simplexml_load_file(''.$suchwoerter[$i].'.xhtml');
    //print_r($xml);
    } else {
        exit('<br>Konnte die Datei nicht öffnen.');
    }

    // suchzeile definieren
    $title = $xml->e2event->e2eventtitle;   
   
    // wenn inhalt in suchzeile gefunden
    if($title == "" ) {
    echo 'Kein Inhalt gefunden mit Suchwort: <strong>'.$suchwoerter[$i].'</strong>';
   
    } else {
    echo 'Inhalt gefunden mit Suchwort: <strong>'.$suchwoerter[$i].'</strong><br>';
   
    $mail = $_REQUEST["mail"];
    //
    if($mail == "1" ) {
    // nachricht senden
    mail("keine@web.de", "Betreff", "Inhalt.\n\n
    ",$headers);
    //
    echo '<br><br>Benachrichtung gesendet.';
    } else {
    // keine aktion
    echo '<br><br>Keine Benachrichtung gesendet.';
    }
   
    } // wenn inhalt in suchzeile gefunden ende
       
   //file loeschen
     $del = "rm ".$suchwoerter[$i].".xhtml";
     $del = escapeshellcmd($del);
     exec($del,$nu);
     } //
?>
 
Die Begriffe sind ohne Trennzeichen in der Textdatei?
Zeig mal diese Textdatei

Und hier ist dein Code mal formatiert, damit man auch erkennt, wo eine Schlaufe begintt und wo endet ohne dass man Klammern abzählen muss.
PHP:
<?php
    $suchwoerter = file("test.txt");
    for($i=0;$i < count($suchwoerter); $i++){
       
    //wget
         $url = "http://127.0.0.1/index.php?search=".$suchwoerter[$i]."";
         $file = "index.php?search=".$suchwoerter[$i]."";
     
         $esc = escapeshellarg($url);
         exec("wget " . $esc);
         
        //file umbenennen
         $ren = "mv $file ".$suchwoerter[$i].".xhtml";
         $ren = escapeshellcmd($ren);
         exec($ren,$nu);
         
        if (file_exists(''.$suchwoerter[$i].'.xhtml')) {
            $xml = simplexml_load_file(''.$suchwoerter[$i].'.xhtml');
        //print_r($xml);
        } else {
            exit('<br>Konnte die Datei nicht öffnen.');
        }
     
        // suchzeile definieren
        $title = $xml->e2event->e2eventtitle;  
       
        // wenn inhalt in suchzeile gefunden
        if($title == "" ) {
            echo 'Kein Inhalt gefunden mit Suchwort: <strong>'.$suchwoerter[$i].'</strong>';
        } else {
            echo 'Inhalt gefunden mit Suchwort: <strong>'.$suchwoerter[$i].'</strong><br>';
       
            $mail = $_REQUEST["mail"];
            //
            if($mail == "1" ) {
                // nachricht senden
                mail("keine@web.de", "Betreff", "Inhalt.\n\n
               ",$headers);
                //
                echo '<br><br>Benachrichtung gesendet.';
            } else {
                // keine aktion
                echo '<br><br>Keine Benachrichtung gesendet.';
            }
       
        } // wenn inhalt in suchzeile gefunden ende
           
       //file loeschen
         $del = "rm ".$suchwoerter[$i].".xhtml";
         $del = escapeshellcmd($del);
         exec($del,$nu);
     } //
?>

Lass dir mal einfach die Suchwörter ausgeben.
 
Ja hast Recht im zusammengestöpselten Script gibt echo $suchwoerter[$i]; auch nur mehr das erste Wort aus.

Im ursprünglichen Script:

PHP:
<?php
$suchwoerter = file("test.txt");
for($i=0;$i < count($suchwoerter); $i++)
{ echo "$suchwoerter[$i]"; }
?>

lief das noch :)

Hab mit komplexeren foreach Schleifen leider nix am Hut.

Die Textdatei ohne Formatierung befindet sich aber im Anhang.
 

Anhänge

  • test.txt
    10 Bytes · Aufrufe: 2
Hab es nun hinbekommen. Falls es gewollt war, danke für den Hinweis mit den Klammern im Script und den Trennern in der Datei. Nach ein wenig umändern des Codes und hinzufügen einer Trennerfunktion hat es geklappt :)

mfg
 

Neue Beiträge

Zurück