2010-11-03 5 views
1

Je chargement du code dans les titres de certains films dans l'attribut title de leurs vignettes respectives, ce format est donc:htmlspcialchars ne fonctionne pas comme je me attends

Nom de l'artiste - « Titre »

J'ai eu ce code au départ:

$return .= "' title='"; 
$return .=$video['title']; 
$return .= "'>"; 

il est évident que la première citation unique était à l'origine l'attribut title pour mettre fin à prematurley, donc je l'ai changé t o:

$return .= "' title='"; 
$return .= htmlspecialchars($video['title']); 
$return .= "'>"; 

Qui n'a eu aucun effet du tout, tous les titres se terminent prématurément. Est-ce que je ne comprends pas la méthode htmlspecialchars?

Répondre

6

http://php.net/manual/en/function.htmlspecialchars.php

Par défaut, htmlspecialchars() n'échappe pas à des guillemets simples (certains comportements de compatibilité ancienne). Utilisez htmlspecialchars($video['title'], ENT_QUOTES).

Vous devriez également passer 'utf-8' comme troisième argument. J'ai enveloppé ce comportement obsolète comme ceci:

function htmlencode($str, $nl2br = false, $nbsp = false) 
    { 
    $str = htmlspecialchars($str, ENT_QUOTES, 'UTF-8', true); 
    if ($nbsp) 
     { 
     $str = str_replace(" ", ' ', $str); 
     } 
    if ($nl2br) 
     { 
     $str = nl2bruni($str); 
     } 
    return $str; 
    } 

/** 
    PHP's built-in nl2br() only works with LF newlines. This version also works with CR+LF, CR and RS 
*/ 
function nl2bruni($str) 
    { 
    return preg_replace('{\\r?\\n|\\r|\\x1e}', '<br />', $str); 
    } 
Questions connexes