HTML innerhalb von <body></body> auslesen
Chris
- php
0 Eddie0 Lösung....
rH0 Bernhard Mecl
Hallo
Ich lese mit fopen den Inhalt einer HTML-Datei aus. Nun möchte aber nur die Daten die sich innerhalb des Bodys befinden, ausgeben (also alles zwischen <body> und </body>). Hab mal daran gedacht z.B. mit ereg nach <body bzw </body> zu suchen. Aber wie krieg ich nun den Inhalt der sich dazwischen befindet?
Gruss Chris
Hi,
so ungefaehr:
if (eregi ("<body>(.*)</body>", $deinText, $regs))
{
$inhalt = $regs[1];
}
Gruss, Eddie
Hi,
so ungefaehr:
if (eregi ("<body>(.*)</body>", $deinText, $regs))
{
$inhalt = $regs[1];
}
Gruss, Eddie
hi eddie
Ich bin zwar in ReExp nicht Sattelfest aber mit dem Ausdruck bekommst ein problem..
Angenommen dein bodytag ist unabsichtlich modifiziert
zb.
<body bgcolor="#000000">.....</body>
So weit ich das beurteilen kann wird das mit deinem Ausdruck nicht gefunden
mfg peter
Ich bin zwar in ReExp nicht Sattelfest aber mit dem Ausdruck bekommst ein problem..
Angenommen dein bodytag ist unabsichtlich modifiziert
zb.
<body bgcolor="#000000">.....</body>
So weit ich das beurteilen kann wird das mit deinem Ausdruck nicht gefunden
Daran habe ich auch gedacht. Gibt es irgend eine 'saubere' Lösung womit sich auch dieses Problem umgehen lässt?
Gruss Chris
Moin!
Ich bin zwar in ReExp nicht Sattelfest aber mit dem Ausdruck bekommst ein problem..
Angenommen dein bodytag ist unabsichtlich modifiziert
zb.
<body bgcolor="#000000">.....</body>
So weit ich das beurteilen kann wird das mit deinem Ausdruck nicht gefunden
Daran habe ich auch gedacht. Gibt es irgend eine 'saubere' Lösung womit sich auch dieses Problem umgehen lässt?
Ja, indem du dir einen Parser schreibst. Ist halb so wild, wie es klingt.
Überlege dir, was passieren muss:
1. Lies Text ein. Suche dabei nach dem String "<body" in allen Schreibweisen (case-insensitiv).
2. Wenn der String gefunden wurde: Suche nach dem nachfolgenden ">".
3. Alle Zeichen, die bislang gelesen wurden, werden verworfen. Alle Zeichen, die jetzt folgen, sind gewünscht.
4. Lies solange Zeichen ein, bis du auf den String "</body>" triffst (case-insensitive). Den String selbst musst du nicht mehr mit kopieren, und wenn du ihn gefunden hast, kannst du deine Suche abbrechen - in einer validen HTML-Datei kommt kein zweiter Body vor.
- Sven Rautenberg
Sers,
warum immer so komplex!
<?
$_FILE=implode("",file("test01.html"));
echo "<pre>".htmlentities($_FILE)."\n\n\n\n</pre>";
eregi('<body[^>]*>([^<]*)</body>',$_FILE,$arr);
foreach($arr AS $v){
echo "<pre>".htmlentities($v)."</pre>";
}
?>
rH
P.S. Das restliche Selfgelaber hätte man sich sparen können vorallem das von Herrn Rautenberg!
eregi('<body[^>]*>([^<]*)</body>',$_FILE,$arr);
^^^^^^^ Du erlaubst keine weiteren tags innerhalb von body!?
_Die_ Lösung scheint mir das nicht gerade zu sein...
<?
$_FILE=implode("",file("test01.html"));
echo "<pre>".htmlentities($_FILE)."\n\n\n\n</pre>";
eregi('<body[^>]*>(.*)</body>',$_FILE,$arr);
foreach($arr AS $v){
echo "<pre>".htmlentities($v)."</pre>";
}
?>
Oh mann,
jetzt fang ich auch schon an! :(
FreitagsSelfKontrolle!
<?
$_FILE=implode("",file("test01.html"));
echo "<pre>".htmlentities($_FILE)."\n\n\n\n</pre>";
eregi('<body[^>]*>(.*)</body>',$_FILE,$arr);
// Aber jetzt funzt es
foreach($arr AS $v){
echo "<pre>".htmlentities($v)."</pre>";
}
?>
Chu rH
Hey,
klasse Ansatz... doch leider funz es nicht wie gewünscht. Der Body wird nicht getrennt und es werden immer "<" und ">" vor und nach jedem Befehl eingefügt...
Bin ich zu dämlich???
Gruß vom Doc
Der Body wird nicht getrennt
... was soviel heißt wie...?
und es werden immer "<" und ">"
vor und nach jedem Befehl eingefügt...
echo "<pre>".htmlentities($v)."</pre>";
^^^^^^^^^^^^ schuldig im Sinne der Anklage
Wenn Du uns verrätst, welchem Zweck Deine Aufgabenstellung dienen soll, könnten wir Dir eventuell noch besser weiterhelfen.
Hey Bernard,
Der Body wird nicht getrennt
... was soviel heißt wie...?
... wollte damit eigentlich nur sagen, dass der Header und Foot leider immer noch dran ist. ;-))
und es werden immer "<" und ">"
vor und nach jedem Befehl eingefügt...
echo "<pre>".htmlentities($v)."</pre>";
^^^^^^^^^^^^ schuldig im Sinne der Anklage
Wenn Du uns verrätst, welchem Zweck Deine Aufgabenstellung dienen soll, könnten wir Dir eventuell noch besser weiterhelfen.
Okay, folgendes Problem was schon etlicher meiner Zeit gekostet hat... ich will ein Börsen-Modul (http://brokerage.teledata.de/BROKERAGE/eyecatcher/ci_hoch.htm" in eine Seite integrieren. Dazu muss ich den Text zwischen <body> und </body> auslesen, trennen und auf der Seite in den HTML-Code einfügen.
Ein weiteres Problem sind noch die Unterverzeichnisse der Grafiken. Ist auch möglich bei z.B. "../l_images/transp.gif" das "../" durch den absoluten Pfad ersetzen zu lassen...?
Achso, den ganzen Hickmick muss ich leider machen, da die Seite nachher korrekt auf Netscape 4.7 angezeigt werden muss. Da ist mit ilink leider nicht viel zu machen und der layer lässt Netscape nur Steuerzeichen anzeichen... Probleme über Probleme... ;-))
Viele Grüße aus Hannover