0

所以首先我注意到当一个&符号(&)在 htmlentities 函数中时,它会将&符号计算为 5 个字符。所以这段代码:

$a = htmlentities("&12345");
$b = substr($a,0,6);
  echo $b; 

会回显'&1',我相信它将 & 计为 5 个字符。更有趣的是英镑符号 (£),它被一起忽略了,所以:

$a = htmlentities("£");
  echo $a;   

没有回声。我在 Chrome 和 FF 上得到相同的结果。我不知道这是一个错误还是我应该使用不同的语法。有谁知道为什么会发生这种情况?谢谢

更新

我已经解决了这个问题:$a = htmlentities("£", ENT_COMPAT, 'ISO-8859-15'); 但&符号问题仍然存在。

4

1 回答 1

1

问题是您正在浏览器窗口中查看输出,其中htmlentities(和等效函数)的输出被呈现以显示给最终用户。

例如:

echo htmlentities("&");

将输出&,因为它已将&字符转换为其等效的 html 实体。看到它有五个字符长。但是,您看不到全文,因为您正在从已将其预渲染为符号&的浏览器中查看。&在 firfox 中,如果您右键单击视口并单击“查看页面源代码”,您将看到全文&...

你的代码:

$a = htmlentities("&12345"); //Outputs: &12345
$b = substr($a, 0, 6); //Selects first six charachters: &, a, m, p, ; and 1
echo $b; // Echo's: &1 which is displayed by the browser as &1

为了解决这个问题,您可以更改函数的顺序:

$a = substr("&12345", 0, 6);
echo htmlentities($a);
于 2013-09-24T13:13:41.203 回答