php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.10.2004, 00:10  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard html-datei parsen?

ich habe eine html datei, bei der sich immer mal wieder etwas ändert.
jetzt würde ich gerne per php die datei einlesen, und die tabellen, die da drin enthalten sind, in eine datenbank schreiben.
der bereich um den es geht wiederholt sich immer wieder in der html-datei, also zB:
Code:
<tr>
 <td>name</td>
 <td>adresse</td>
 <td>nummer</td>
</tr>
wie kann ich das halbwegs einfach einlesen ?
Unbekanntes_Pferd ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.10.2004, 01:25  
Gast
 
Beiträge: n/a
Standard

in ein blob-feld
 
Alt 16.10.2004, 05:23  
Gast
 
Beiträge: n/a
Standard

Was hat denn bitte "Blob" mit der Sache zu tun?
Hier hast Du deinen Code, den Du dazu brauchst. Ich habe dir das mal komplett geschrieben, weil ich weiss, wie umständlich es zu Anfang ist, sowas zu erstellen. Daher guck dir dieses genau an und lese darüber auch was. Weil sonst verstehst Du das im Enddefekt nicht. Und das soll ja auch nicht die Lösung sein. Die Testausgabe solltest Du entfernen. Ich hatte sie nur kurz mit übernommen, das ich es ebend schnell mal getestet hatte.

In dem Sinne schon mal bitteschön und viel Spaß.


Code:
<?php
$file    = "test.html";               // Datei, die Du einlesen möchtest.
$implode = @implode("",file($file));  // Datei Implode ""
$split   = split("<tr>",$implode);    // Splitte bei <tr>
$count   = count($split);           // Anzahl der Splits = Zeilenanzahl


//Testausgabe ////////////////////////
echo "<table>\n";
echo "    <tr>\n";
echo "        <td>Name</td>\n";
echo "        <td>Adresse</td>\n";
echo "        <td>Nummer</td>\n";
echo "    </tr>\n";
//////////////////////////////////////

for ($x=1;$x<$count;$x++)
{
    $data     = preg_replace("'<[\/\!]*?[^<>]*?>'si","^",$split[$x]); // Nach allen suchen was <*> ist. Wichtig das der Text in der Tabelle reiner Text ist. Ansonsten abändern.
    $search   = array("^"); // Suchen nach den ersetzten ^
    $replace  = array("\|"); // Diese ersetzten durch |
    $strdata  = trim(str_replace($search,$replace,$data)); // Trimmen von leerzeichen vorne und hinten, suchen und ersetzten.
    $output   = explode("\|",$strdata); // Teilen der momentanen Sachlage in |.
    
    // Die Ausgabe ist dann $output[x]--> 0=|; 1=Name; 2=|; 3=Adresse; 4=|; 5=Nummer; 6=|. Die | werden natürlich nicht angezeigt. Soll nur als Hilfe dienen.


    //Testausgabe ////////////////////////
    echo "    <tr>\n";
    echo "        <td>".$output[1]."</td>\n";
    echo "        <td>".$output[3]."</td>\n";
    echo "        <td>".$output[5]."</td>\n";
    echo "    </tr>\n";
    //////////////////////////////////////


    // Datensatz in die Datenbank speichern.
    mysql_query("INSERT INTO `tabelle` (`name`,`adresse`,`nummer`) VALUES ('$output[1]','$output[3]','$output[5]');") or die(mysql_error());
}

//Testausgabe ////////////////////////
echo "</table>\n";
//////////////////////////////////////
?>
 
Alt 16.10.2004, 12:26  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

WOW, DANKE !!!!!!!
Hammer
klappt auch alles schon sehr gut...ein problem hab ich noch:
manchmal is der text, in einer zweile zwischen und gesetzt. dann wird gar nichts ausgegeben... *?*
Unbekanntes_Pferd ist offline  
Alt 16.10.2004, 13:31  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

ok, also wenn um den betreffenden text und steht, dann kommt das ganze in die nächste spalte.
allerdings versteh ich nich warum :/
Unbekanntes_Pferd ist offline  
Alt 16.10.2004, 18:04  
Gast
 
Beiträge: n/a
Standard

Du solltest dir mal Hilfeseiten für Reguläre Ausdrücke angucken.

Code:
suchen
$data     = preg_replace("'<[\/\!]*?[^<>]*?>'si","^",$split[$x]);

ersetzen
$data     = preg_replace("'<[\/\!]*?t[^<>]*?>'si","^",$split[$x]);
Dann ist es allerdings so, das die <small> tags auch mit in die Datenbank übernommen werden. Um dieses zu verhindern könntest Du im Vorfeld alle deine HTML Tags, die Du nicht mit übernehmen willst, durch "" ersetzen könntest. Wenn Du fragen hast, dann kannst Du mir auch per ICQ schreiben.
 
Alt 16.10.2004, 18:12  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

Danke schonmal, das klappt.

Aber was meinst du mit:
Zitat:
Zitat von EnemieOne
Um dieses zu verhindern könntest Du im Vorfeld alle deine HTML Tags, die Du nicht mit übernehmen willst, durch "" ersetzen könntest.
An der Quelldatei kann ich nichts verändern, oder wie meintest du das?
Unbekanntes_Pferd ist offline  
Alt 16.10.2004, 18:41  
Gast
 
Beiträge: n/a
Standard

Nein, Du könntest im Vorfeld durch das Script nach den Stellen suchen und ersetzten, die Du für überflüssig hälst.

So in etwa:
Code:
preg_replace("''si","^",$htmldatei);
oder
preg_replace("''si","^",$htmldatei);
 
Alt 16.10.2004, 18:50  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

also ich hab jetzt am anfang der for-schleife folgendes stehen:
Code:
    $data     = preg_replace("'<[\/\!]*?[^<>]*?>'si","^",$split[$x]);
    $data	  = preg_replace("''si","^",$data);
    $data	  = preg_replace("''si","^",$data);
scheint aber irgendwie nich das zu sein, was du meintest, zumindest klappt es nicht
Unbekanntes_Pferd ist offline  
Alt 16.10.2004, 19:19  
Erfahrener Benutzer
 
Registriert seit: 05.07.2003
Beiträge: 230
Unbekanntes_Pferd
Standard

bingo, ich glaub ich habs hinbekommen:

Code:
$implode = @implode("",file($file));  // Datei Implode ""
$implode	  = preg_replace("''si","",$implode);
$implode	  = preg_replace("''si","",$implode);
im oberen bereich des scripts

DANKE !!!!!!!!!!!
Unbekanntes_Pferd ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Hochgeladene Datei wird doppelt abgelegt thecracked PHP Tipps 2008 3 01.07.2008 16:31
Datei per Buttonklick runterladen... go1denboy PHP Tipps 2008 7 14.06.2008 20:25
Dynamische HTML Seite parsen blaus PHP Tipps 2008 10 17.03.2008 14:44
Datei durchsuchen Wöllchen Beitragsarchiv 3 02.03.2006 22:23
Datei Uploaden & Parsen PHP Tipps 2007 7 04.11.2005 20:51
&amp;amp;amp;lt;if&amp;amp;amp;gt; &amp;amp;amp;lt;/if&amp;amp;amp;gt; in einer HTML Datei fuer Templ PHP-Fortgeschrittene 6 03.11.2005 12:05
Alle links einer HTML Datei anzeigen? nicobischof PHP Tipps 2005-2 4 26.10.2005 18:20
PHP Link in einer HTML Datei ?! PHP Tipps 2005-2 10 20.10.2005 14:23
HTML Datei mit PHP mailen PHP Tipps 2005-2 14 20.10.2005 10:19
Datei auf FTP-Server ändern ohne lokal abzuspeichern faux PHP-Fortgeschrittene 11 02.09.2005 11:54
XML Datei mit PHP Parsen - Problem mit Zeichencodierung DonTermi PHP-Fortgeschrittene 7 10.08.2005 11:36
Ordner Struktur auslesen bestimmte datei finden .... silverghost PHP Tipps 2005 3 24.05.2005 13:55
includen in html datei GrU3nL!nG PHP Tipps 2005 19 13.05.2005 15:41
Datei Upload mittels html Formular auf tripod server PHP Tipps 2005 5 16.04.2005 08:36
HTML - Datei ausgeben PHP Tipps 2005 5 19.02.2005 16:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php datei parsen, html datei parsen, html dateien parsen, datei parsen php, php file parser, html parsen, php file parsen, php parser html, php dateien parsen, php textdatei parsen, html datei php parsen, http://www.php.de/php-tipps-2004/10569-html-datei-parsen.html, html-dateien parsen, php @implode, implode echo parsen php, daten von php datei parsen, html datein parsen, parsen html datei, html parsen php, aus html datei parsen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:21 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.