我将某些影片的标题中的代码加载到各自缩略图的title属性中,因此格式为:
艺术家姓名 - '歌曲标题'
我最初有这个代码:
$return .= "' title='";
$return .=$video['title'];
$return .= "'>";
显然第一个单引号导致title属性结束prematurley,所以我把它改为:
$return .= "' title='";
$return .= htmlspecialchars($video['title']);
$return .= "'>";
根本没有效果,所有的标题仍然过早结束。
我是否误解了htmlspecialchars方法?
答案 0 :(得分:6)
http://php.net/manual/en/function.htmlspecialchars.php
默认情况下,htmlspecialchars()
不会转义单引号(某些古老的兼容性行为)。使用htmlspecialchars($video['title'], ENT_QUOTES)
。
你也可能应该传递'utf-8'作为第三个参数。我把这个弃用的行为包装成这样:
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);
}