Php htmlspcialchars没有像我预期的那样工作
我将一些电影的标题中的代码加载到它们各自缩略图的标题属性中,因此这种格式是: 艺人名称-“歌曲名称” 我最初有以下代码:Php htmlspcialchars没有像我预期的那样工作,php,Php,我将一些电影的标题中的代码加载到它们各自缩略图的标题属性中,因此这种格式是: 艺人名称-“歌曲名称” 我最初有以下代码: $return .= "' title='"; $return .=$video['title']; $return .= "'>"; 显然,第一个单引号导致title属性结束prematrley,因此我将其更改为: $return .= "' title='"; $return .= htmlspecialchars($video['title']); $retur
$return .= "' title='";
$return .=$video['title'];
$return .= "'>";
显然,第一个单引号导致title属性结束prematrley,因此我将其更改为:
$return .= "' title='";
$return .= htmlspecialchars($video['title']);
$return .= "'>";
这根本没有效果,所有的标题仍然过早地结束
我是否误解了htmlspecialchars方法
默认情况下,htmlspecialchars不会对某些古老的兼容性行为进行单引号转义。使用htmlspecialchars$video['title',ENT_引号
您可能还应该将“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);
}
默认情况下,htmlspecialchars不会对某些古老的兼容性行为进行单引号转义。使用htmlspecialchars$video['title',ENT_引号
您可能还应该将“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);
}