php
  • html
  • cdata
  • 2017-12-09 5 views 1 likes 
    1

    ich eine Funktion schrieb:CDATA funktioniert nicht wie erwartet

    function wrapWithTag($tag, $data) { 
     
        $cdata = "<![CDATA[$data]]>"; 
     
        echo "<$tag>$cdata</$tag>"; 
     
    }

    Zum Beispiel Ich mag es, verwenden, wie

    $name = 'myCellContent - <extra>'; 
     
    wrapWithTag("td", $name);

    Die erwartete Ausgabe würde sein eine HTML-Tabellenzelle mit string:

    myCellContent - <extra>

    Was es tatsächlich leere Zellen nicht gedruckt wird. Wie kann ich CDATA richtig verwenden?

    bearbeiten: Ich habe eine einfache Abhilfe bekam:

    function wrapWithTag($tag, $data) { 
     
        $data = str_replace("<", "&lt;", $data); 
     
        echo "<$tag>$data</$tag>"; 
     
    }

    Aber ich würde es vorziehen, einen CDATA-Abschnitt verwendet wird. Fühlen Sie sich frei, eine Lösung zu posten: P

    Antwort

    1

    CDATA sections sind eine Funktion von XML. HTML unterstützt sie nicht.

    XHTML tut, aber Sie müssen sicherstellen, dass der Browser das Dokument im XML-Modus analysiert (durch Einstellung Content-Type: application/xhtml+xml in den HTTP-Antwortheadern).

    Wenn Sie in HTML Zeichen mit besonderer Bedeutung verwenden möchten, müssen Sie Elemente wie &lt; verwenden.

    PHP hat the htmlspecialchars function; es ist nicht nötig, mit str_replace zu rollen.

    Verwandte Themen