FriendsOfREDAXO / search_it

Umfangreiche Volltextsuche für REDAXO 5 CMS. Durchsucht Artikel, Medien, Dateien, PDF-Inhalte und Datenbank-Einträge.
https://github.com/FriendsOfREDAXO/search_it
MIT License
65 stars 18 forks source link

Warning beim indexieren #361

Open tbaddade opened 1 year ago

tbaddade commented 1 year ago

Description / Beschreibung Folgende Warning erscheint während des schrittweise indexieren.

Warning: Invalid argument supplied for foreach() in /search_it/lib/search_it.php on line 835

Affected versions / Verwendete Versionen

REDAXO: 5.14.2 PHP: 7.4.29

tyrant88 commented 1 year ago

kannst du bitte mal die Zeile 831 ändern in $plaintext = $this->getPlaintext($indexData['unchangedtext']); und dann berichten, ob der Fehler weg ist?

tbaddade commented 1 year ago

Fehler ist nach der Änderung immer noch vorhanden.

tyrant88 commented 1 year ago

Dann vielleicht $plaintext = $this->getPlaintext($indexData['unchangedtext']) ?? ''; Hast du das plaintext-Plugin im Einsatz?

tbaddade commented 1 year ago

Dann vielleicht $plaintext = $this->getPlaintext($indexData['unchangedtext']) ?? '';

Das wird nicht helfen … $plaintext ist vor dem Array gefüllt. preg_split liefert in der foreach jedoch false, sodass die Warning erscheint.

Hast du das plaintext-Plugin im Einsatz?

Nein

tyrant88 commented 1 year ago

dass preg_split false liefert, hielt ich für unwahrscheinlich (passiert ja nur bei einem regex-error). Wenn du weißt, dass plaintext gefüllt ist, kannst du es auch dumpen? Ich könnte zwar den preg_split-Ausdruck auf !== false testen, aber da verliert man ja was, wenn dein $plaintext nicht null ist..

tbaddade commented 1 year ago

Wenn ich diese Zeile lösche, dann klappt jedes preg_split.

Weshalb die Zeile mit html_entity_decode? Die Tags scheinen in der Methode noch vorhanden zu sein, da diese eine Zeile vorher via strip_tags gelöscht werden. Weshalb das Konvertieren von Entities zurück zu HTML Tags?

tyrant88 commented 1 year ago

ohne das decode könnte im String z.B. ein © stehen. da würde das preg_split dann das "copy" als keyword rausholen...