Skip to main navigation Skip to main content Skip to page footer
TYPO3-Tipp: Wenn Anführungszeichen vor Zahlen zum Problem werden

TYPO3-Tipp: Wenn Anführungszeichen vor Zahlen zum Problem werden

Artikel vorlesen lassen

Loading the Elevenlabs Text to Speech AudioNative Player...
| TYPO3 | Geschätzte Lesezeit : min.

Manchmal sind es die kleinsten Details, die dich zur Verzweiflung bringen: Ein 503-Fehler bei der Bildausgabe - aber nur wenn Anführungszeichen vor einer Zahl stehen. Hier ist die Lösung für diesen fiesen Edge Case, der dich nachts um den Schlaf bringt.

Manchmal sind es die kleinsten Details, die dich zur Verzweiflung bringen. Ein Entwickler aus meiner Community hatte kürzlich ein faszinierendes Problem: Ein 503-Fehler bei der Bildausgabe - aber nur unter ganz speziellen Umständen.

Das mysteriöse Problem

Die Situation: Ein einfaches Inhaltselement "Bilder" mit einem Text im Title-Feld, der Anführungszeichen und eine Jahreszahl enthielt. Soweit, so normal. Doch TYPO3 warf einen strtolower()-Fehler.

Das Verrückte: Der Text funktionierte manchmal, manchmal nicht. Nach einigem Testen stellte sich heraus: Anführungszeichen vor einer Zahl verursachten den Fehler ("2011), während Anführungszeichen nach einer Zahl problemlos funktionieren (2011").

Die Ursache lag im TypoScript

Der Schuldige war diese Zeile für eine Fancybox-Integration:

lib.contentElement.settings.media.popup.linkParams.ATagParams.dataWrap = data-fancybox="fancybox" data-caption="{file:current:title}"

Der Fehler strtolower(): Argument #1 ($string) must be of type string, int given zeigt: Irgendwo in der Verarbeitungskette wird ein Integer-Wert an eine Funktion übergeben, die einen String erwartet. Die spezielle Kombination "2011 im Title-Feld löst dieses unerwartete Verhalten aus.

Die saubere Lösung

Die Lösung: Das HTML-Escaping explizit kontrollieren:

lib.contentElement.settings.media.popup.linkParams.ATagParams.dataWrap {
  wrap = data-fancybox="fancybox" data-caption="|"
  cObject = COA
  cObject {
    10 = TEXT
    10.data = file:current:title
    10.htmlSpecialChars = 1
    10.if.isTrue.data = file:current:title
  }
}

Der entscheidende Punkt ist htmlSpecialChars = 1. Das sorgt dafür, dass alle Sonderzeichen korrekt escaped werden, egal ob sie vor Zahlen, Buchstaben oder am Ende stehen.

Was wir daraus lernen können

Das Problem zeigt: Bei dataWrap und ähnlichen TypoScript-Funktionen solltest du HTML-Escaping explizit aktivieren, wenn Nutzereingaben ins Spiel kommen. Die Lösung mit htmlSpecialChars = 1 sorgt für saubere String-Verarbeitung.

Auch wenn 99% der Inhalte problemlos funktionieren - es ist immer dieser eine Edge Case mit speziellen Zeichenkombinationen, der dich nachts um den Schlaf bringt.

Die vollständige Diskussion zu diesem Problem findest du hier im t3forum.

Zurück

Wer schreibt hier?

Hi, ich bin Wolfgang.

Seit 2006 tauche ich tief in die faszinierende Welt von TYPO3 ein – es ist nicht nur mein Beruf, sondern auch meine Leidenschaft. Mein Weg führte mich durch unzählige Projekte, und ich habe Hunderte von professionellen Videoanleitungen erstellt, die sich auf TYPO3 und seine Erweiterungen konzentrieren. Ich liebe es, komplexe Themen zu entwirren und in leicht verständliche Konzepte zu verwandeln, was sich auch in meinen Schulungen und Seminaren widerspiegelt.

Als aktives Mitglied im TYPO3 Education Committee setze ich mich dafür ein, dass die Prüfungsfragen für den TYPO3 CMS Certified Integrator stets aktuell und herausfordernd bleiben. Seit Januar 2024 bin ich stolz darauf, offizieller TYPO3 Consultant Partner zu sein!

Meine Leidenschaft endet aber nicht am Bildschirm. Wenn ich nicht gerade in die Tiefen von TYPO3 eintauche, findest du mich oft auf meinem Rad, während ich die malerischen Wege am Bodensee erkunde. Diese Ausflüge ins Freie sind mein perfekter Ausgleich – sie halten meinen Geist frisch und liefern mir immer wieder neue Ideen.

Der TYPO3 Newsletter

TYPO3-Insights direkt in dein Postfach! 
Hol dir monatliche Updates, praktische Tipps und spannende Fallstudien. 
Übersichtlich, zeitsparend, ohne Spam. 
Bist du dabei? Jetzt für den Newsletter anmelden!

Trage dich hier ein, um den Newsletter zu erhalten.