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(" ", '&nbsp;', $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);
    }