dedlfix: Array befüllen und durchsuchen

Beitrag lesen

Tach!

letztlich will ich, dass doppelt vorhandene Strings (Schlagzeilen) übergangen werden.
[DOMDocument]
$tags = $doc->getElementsByTagName('h2');

Du hast zunächst einmal noch keine Strings direkt vorliegen, sondern Objekte, bei denen in irgendeiner Eigenschaft der nämliche String steckt. Ein array_unique() müsste also Objekte miteinander vergleichen, was nur unter bestimmten Umständen zielführend ist. Namentlich muss der Rest der Eigenschaften ebenfalls gleich sein, nicht nur der zu vergleichende String. Das ist vermutlich nicht gegeben.

Um das Ziel zu erreichen, kannst du einerseits alle Strings aus dem DOMNode in ein einfaches Array extrahieren, welches du dann durch array_unique() schicken kannst. Wenn du zusätzlich zu dem String jedoch noch weitere Werte aus dem Node benötigst, bringt dir das aber nicht viel. Andererseits kannst du auch vor dem Durchlaufen der Nodes ein leeres Array anlegen. Bei jedem Node prüfst du nun, ob der String schon im Array enthalten ist und wenn nicht, bearbeitest du den Node und fügst nur dessen String in das Array ein. Das Array kannst du nach der Schleife entsorgen, oder es PHP überlassen.

dedlfix.