Een website met SyntaxHighlighter valideren als XHTML 1.0 Strict

Special tekens zoals &,'",',<,> worden in Syntax niet als html geschreven.

In Speciale tekens converteren naar een html entiteit in een Smarty view worden de speciale tekens geconverteerd naar een html entiteit, echter worden html -tags in een artikel niet meer als html code uitgevoerd.

PRE methode
  • Voordelen : De PRE -tag is standaard HTML werkt overal, zelfs in RSS feeds.
  • Nadelen : Speciale tekens moeten geconverteerd worden naar een html entiteit.
SCRIPT methode
  • Voordelen : Door de CDATA is er geen conversie van speciale tekens nodig.
  • Nadelen : De SCRIPT -tag wordt niet herkend door sommige browsers en zelf weggelaten in RSS feeds.

We kunnen de PRE methode vervangen door de SCRIPT methode, Als de The W3C Markup Validation Service de website raadpleegt.

Met de variabele $_SERVER['HTTP_USER_AGENT'] (of in Kohana : Request::$user_agent) kunnen we bepalen waneer deze W3C_Validator/1.781 is.

$replacement = '';

Er blijft dan nog een foutmelding over : Er is geen class attribuut voor de SCRIPT -tag in XHTML 1.0 Strict.

We komen tot de conclusie dat het verwijderen van de Syntax de enige oplossing is om een website met SyntaxHighlighter te valideren als XHTML 1.0 Strict :

$replacement = '<pre>SyntaxHighlighter : Removed Syntax for The W3C Markup Validation Service.</pre>';

We creƫren een smarty modifier genaamd w3c (function.w3c.php), en plaatsen deze in de map smarty_plugins :

In de Controller :

if ( substr($_SERVER['HTTP_USER_AGENT'], 0, 13) === 'W3C_Validator' )
    $boolean_w3c = TRUE;

In de Controller (Kohana) :

if ( substr(Request::$user_agent, 0, 13) === 'W3C_Validator' )
    $boolean_w3c = TRUE;

In de Smarty view :

{if $boolean_w3c}
    {w3c t=$model_article->text}
{else}
    {$model_article->text}
{/if}