php空字符串htmlspecialchars()

时间:2014-08-18 23:48:31

标签: php string htmlspecialchars

所以,我正在尝试使用htmlspecialchars()来保护我的网站,但不幸的是我遇到了这段代码:

<?php

function wrap_nome($firstname, $lastname)
{
$join = htmlspecialchars($firstname, ENT_QUOTES) . ' ' . htmlspecialchars($lastname, ENT_QUOTES);
if (mb_strlen($join) > 32)
{
$text = substr($join,0,32);
return $text . " ...";
}
else
{
return $join;
}
}

$nome = wrap_nome($firstname, $lastname);

echo '<span style="color:#7F7F7F;font-family:Arial;font-size:13px;"><b>' . $nome . '</b></span>';

?>

最初,我认为问题可能是字符串$nome有双引号和单引号,然后我删除了它们,发现htmlspecialchars($lastname, ENT_QUOTES)继续被回显,htmlspecialchars($firstname, ENT_QUOTES)继续给我一个空字符串!

如果我这样做:

echo '<span style="color:#7F7F7F;font-family:Arial;font-size:13px;"><b>' . htmlspecialchars($nome, ENT_QUOTES) . '</b></span>';

......它不输出任何东西。

是什么导致了这个?

2 个答案:

答案 0 :(得分:1)

htmlspecialchars如果收到错误则返回FALSE,如果$nome包含无法在指定字符集中表示的任何字符,则会发生错误。在PHP 5.4之前,字符集默认为ISO8859-1UTF-8从那时起,尝试使用htmlspecialchars($nome, ENT_QUOTES, 'iso8859-1')

如果这不起作用,请参阅documentation中的字符集列表,并使用适当的字符集作为您的姓名。

答案 1 :(得分:0)

简单地替换

htmlspecialchars($str,ENT_QUOTES );

htmlentities($st ,ENT_QUOTES ,"UTF-8");