Skip to main content

Überblick

revolution/laravel-fullfeed ist ein Laravel-Paket, das für Feed-Reader den Fließtext aus Webseiten extrahiert.
Über site-spezifische Regeln (JSON) werden die benötigten Inhalte je Artikel gezogen.
Ursprünglich war das Feature Teil einer privaten Feed-Reader-Anwendung und wurde extrahiert und als öffentliches Paket veröffentlicht.

Voraussetzungen

  • PHP >= 8.4 (verwendet Dom\HTMLDocument)
  • Laravel >= 12.x

Installation

Für die Entwicklungsversion:

Konfiguration und Site-Definitionen veröffentlichen

Dabei werden folgende Elemente erstellt:
  • config/fullfeed.php
  • resources/fullfeed

Automatische Aktualisierung der Definitionsdateien (composer post-update-cmd)

Wenn Sie die Site-Definitionen bei composer update automatisch neu veröffentlichen lassen möchten, fügen Sie in composer.json Folgendes hinzu.

Grundlegende Verwendung

Tests

Mit FullFeed::expects() können Sie die Facade stubben.

Site-Regeln-Dateien

items_all.json

items_all.json ist die Basis, um Regeln im LDRFullFeed-Format (wedata) einzubinden.
Livedoor Reader war ein in Japan bekannter Dienst. Der Dienst selbst wurde eingestellt, die Regel-Daten leben aber als Erbe fort. FullFeed nutzt dieses historische Datenformat.

plus.json

plus.json ist eine Beispieldatei für eigene Regeln.

Felder der Regel-Konfiguration

  • url: Regex zur Zuordnung der Ziel-URL
  • selector: CSS-Selektor (hat Vorrang gegenüber xpath)
  • xpath: XPath-Angabe
  • enc: Encoding, falls eine Zeichensatz-Konvertierung nötig ist
  • callable: Eigene Extractor-Klasse als Vorverarbeitung (einzeln/als Array)
  • after_callable: Extractor-Klasse, die abschließend als Nachbearbeitung läuft

Ausführungsreihenfolge der Extractors als Pipeline

FullFeed lässt die Extractors nacheinander durch das Pipeline-Pattern von Laravel laufen.
  1. Über callable angegebene Klassen
  2. XPathExtractor
  3. SelectorExtractor
  4. Über after_callable angegebene Klassen
Da vor und nach einer einfachen XPath-/CSS-Extraktion eigene Verarbeitung eingefügt werden kann, lässt sich mit dieser Architektur gut auf site-spezifische Eigenheiten reagieren.

Eingebaute Extractors

RemoveElements

Entfernt die Elemente eines angegebenen Selektors.

ReplaceMatches

Ersetzt per Regex zutreffende Zeichenketten (arbeitet auf dem HTML-String).

StripTags

Entfernt Tags analog zu strip_tags().

Squish

Entfernt mit Str::squish() überflüssige Leerzeichen.

Eigene Regeln hinzufügen

  1. Legen Sie in resources/fullfeed eine JSON-Datei an.
  2. Ergänzen Sie sie in config/fullfeed.php unter paths.
Da die erste in data.url zutreffende Regel verwendet wird, empfiehlt es sich, hinzugefügte Dateien am Anfang von paths einzufügen.
Zuletzt geändert am 13. Juli 2026