这是我的代码
$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
我得到与输入完全相同的输出
答案 0 :(得分:0)
根据手册:
此功能与...相同 htmlspecialchars()以各种方式,除了 与htmlentities(),所有字符 它有HTML字符实体 等价物被翻译成这些 实体。
因此,在没有看到原始输入的情况下,我只能假设原始输入不包含任何可以翻译的字符。
答案 1 :(得分:0)
如果你得到相同的输出,没有什么可以逃脱的。
htmlentities()
应该将<
和>
或&
转换为实体等价物。它只留下其他ASCII字符,如/
或:
。因此,您的网址可能只包含这些网址,但不包含&
。
答案 2 :(得分:0)
我想你想要urlencode。它会根据您的需要将http://php.net/docs.php
编码为http%3A%2F%2Fphp.net%2Fdocs.php
。