Text aus HTML rausfiltern, mit welcher Funktion? (php)

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Mafia GmbH
Mitglied
Beiträge: 355
Registriert: 13.10.2003 16:09

Text aus HTML rausfiltern, mit welcher Funktion? (php)

Beitrag von Mafia GmbH »

Hallo ich suche verzweifelt nach einer Funktion in php das aus einer HTML einen Text ausfiltert.

Das heißt, ich habe HTML in einem String gespeichert.

z.B. html = "<html><b>Dies ist der Text</b><html>";

Ich möchte der Funktion einfach sage, das der Text zwischen <b> und </b> steht und soll diesen Text in einen Anderen String speichern.

Habe schon geggoogelt, aber wen ich Wort Filterung eingebe, dann finde ich genau andersrum, das man den Text da zwischen durch String ersetzen könnte.

Ich danke für die Hilfe :)
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
Mafia GmbH
Mitglied
Beiträge: 355
Registriert: 13.10.2003 16:09

Beitrag von Mafia GmbH »

Diese Funktion entfernt nur die HTML Tags, wie ich dies so verstanden habe.

Aber ich muss unbending die Funktion haben, die zschischen par Tags auslesen kann.
Weil in der HTML kann auch wo anders noch andere Texte Sch befinden die ich nicht so brauche. Und wen ich die HTML Tags lösche, dann würde mir noch schwiriger sein den Text raus zu filtern.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Also Du willst explizit den String zwischen <b> und </b> rausfiltern? Gibt es nur einen solchen Tag?
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
Mafia GmbH
Mitglied
Beiträge: 355
Registriert: 13.10.2003 16:09

Beitrag von Mafia GmbH »

Also der String kann so aussehen.

HTML = '<html>Text das nicht benötig ist.<div Style="" id=test>Das was ich will</div>Dieser Text ist auch unnötigt.';

So wen ich den Text "Das was ich will" ausfiltern soll.
Will ich der Funktion folgende Werte angeben, 'id=test>' und '</div>'.
Das heißt das die Funktion einfach nach "id=test>" sucht und holt jedes Zeichen in den String raus bist es auf '</div>' stöst.

Ich nahme extra mehrere Zeihen, damit es eindeutig bleibt, und einmalig im string.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Scheinbar hat keiner von den RegExern 'ne Idee.

Probier' es so:

Code: Alles auswählen

<?PHP
$start = '<div id="test">';
$stop = '</div>';
$text = '<html>Text das nicht benötig ist.<div id="test">Das was ich will</div>Dieser Text ist auch unnötigt.';
$first = strpos($text, $start);
$second =  strpos($text, $stop);
$text = substr($text, $first+strlen($start), $second-strlen($text));

print($text);

?>
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Auf die Schnelle (musst du bestimmt noch anpassen):

Code: Alles auswählen

preg_match_all('#<([^>]+)>(.*?)</\1>#', $text, $matches);
Diese Anweisung sollte alle HTML-Tags und deren Inhalt in das Array $matches schreiben. Allerdings berücksichtigt der Code keine Tags ohne schließenden Tag (<input />, <img /> etc.).

Edit: Schau dir auch mal das hier an: [php:preg_match_all]. Dort wird exakt dieses Beispiel verwendet.
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Super, dann vllt so:

Code: Alles auswählen

<?PHP
$start = '<div id="test">';
$stop = '<\/div>';
$text = '<html>Text, der nicht benötig wird.<div id="test">Das ist, was ich will</div> Dieser Text ist auch unnötigt<div id="test">Dieser aber auch.</div>';
preg_match_all("/$start.*?.$stop/i", $text, $ausgabe);
print_r($ausgabe);
?>
Jetzt findet es alles zwischen den gesuchten Tags..
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
Mafia GmbH
Mitglied
Beiträge: 355
Registriert: 13.10.2003 16:09

Beitrag von Mafia GmbH »

Danke supper, habt sogar für mich vor gekaut, brauche einfach nur zu schlucken :cookie: :)

Naja, aber kleine Verbesserung habe ich doch machen müssen.

So Leuft es:)

preg_match_all("|$start(.*)$stop|", $html, $text);

Aber wen man weiß wie die Funktion heißt, findet man zimlich schnell die passende erklärung :)


Vielen dank
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Wenn du das ganze nur einmal finden willst, würde ich [php:preg_match] verwenden. :wink:
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“