htmlspecialchars()或htmlentities()不起作用

时间:2011-02-03 13:59:24

标签: php

这是我的代码

$currentPage = SITE_URL.'/'.basename($_SERVER['PHP_SELF'])."?".substr($tail,1);
//For example a URL 'http://php.net/docs.php
'
$currentPage = htmlspecialchars($currentPage);
//$currentPage = htmlentities($currentPage);

//I was hoping for a output like this 'http%3A%2F%2Fphp.net%2Fdocs.php  '
echo $currentPage;  //but I get http://php.net/docs.php again

我得到与输入完全相同的输出

3 个答案:

答案 0 :(得分:0)

根据手册:

  

此功能与...相同   htmlspecialchars()以各种方式,除了   与htmlentities(),所有字符   它有HTML字符实体   等价物被翻译成这些   实体。

因此,在没有看到原始输入的情况下,我只能假设原始输入不包含任何可以翻译的字符。

答案 1 :(得分:0)

如果你得到相同的输出,没有什么可以逃脱的。

htmlentities()应该将<>&转换为实体等价物。它只留下其他ASCII字符,如/:。因此,您的网址可能只包含这些网址,但不包含&

答案 2 :(得分:0)

我想你想要urlencode。它会根据您的需要将http://php.net/docs.php编码为http%3A%2F%2Fphp.net%2Fdocs.php