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

Kommentare unter Artikeln sind deaktiviert. Wenn du eine Frage oder Ergänzung hast, schreib mir bitte eine E-Mail.

Hi, ich bin Wolfgang.

Seit 2006 arbeite ich mit TYPO3. Nicht in der Theorie, sondern in echten Projekten mit echten Deadlines. Die Probleme, die du gerade hast, hatte ich wahrscheinlich schon dreimal.

Irgendwann habe ich angefangen, mein Wissen in Videokurse zu packen. Nicht weil ich gerne vor der Kamera stehe, sondern weil ich dieselben Fragen immer wieder gehört habe. Mittlerweile sind es Hunderte Videos geworden. Jedes Einzelne entstand aus einer konkreten Frage aus einem konkreten Projekt.

Was mich von einem YouTube-Tutorial unterscheidet: Ich kenne nicht nur die Lösung, sondern auch den Kontext. Warum etwas so funktioniert. Wann es nicht funktioniert. Und welche Fehler du dir sparen kannst, weil ich sie schon gemacht habe.

Als Mitglied im TYPO3 Education Committee sorge ich dafür, dass die Zertifizierungsprüfungen auf dem aktuellen Stand bleiben. Was dort geprüft wird, fließt direkt in meine Kurse ein.

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.