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.

Back

Du hast eine Frage oder willst das Thema diskutieren? 

Im Community Hub für TYPO3 kannst du dich mit anderen TYPO3 Anwendern austauschen. Und wenn du keine neuen Artikel verpassen willst: Der TYPO3 Newsletter kommt einmal im Monat, ohne Spam.

Wolfgang Wagner

Wolfgang Wagner

TYPO3 Trainer, Integrator und Berater TYPO3 Certified Integrator (TCCI)

Wolfgang Wagner – TYPO3 Seminare und Support · TYPO3 Education and Certification Committee · TCCI Task Force

Wolfgang Wagner arbeitet seit 2006 mit TYPO3 und ist unter wwagner.net als Trainer, Integrator und Berater aktiv. Schwerpunkt sind Schulungen, Online-Kurse und individuelle Beratung für Integratoren, Agenturen und Betreiber von TYPO3-Webseiten, die TYPO3 sauber, modern und wirtschaftlich einsetzen wollen. Er ist Mitglied im TYPO3 Education and Certification Committee und in der TCCI Task Force und gestaltet die offizielle TYPO3 Certified Integrator Prüfung aktiv mit.

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.