解决$_GET[‘url’]无法获取特殊字符的问题:使用urlencode()函数进行编码

随心笔谈9个月前发布 admin
200 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

文章讨论了在PHP中如何处理URL中的特殊字符(如#、&、amp等)无法直接传递的问题。当通过$_GET获取URL时,这些特殊字符会被过滤或丢失,导致无法完整获取所需数据。为了解决这一问题,文章提出了一种变通方法:通过读取浏览器的请求地址域(REQUEST_URI)来获取完整的URL。通过使用`strstr`函数匹配“url=”这一特定模式,可以提取出完整的URL数据,从而避免了通过$_GET获取时的限制。这种方法确保了在处理包含特殊字符的URL时,依然能够正确获取完整的数据。

有些符号在URL中是不能直接传递的,无法传入PHP处理,比如#&等符号,通过$_GET是获取不到的,比如一个域名https://localhost/url.php?url=yangyufei+eating&drinking,只能获取到yangyufei eating。

这个时候只能变通一下,想想用户访问这个地址,他的浏览器地址栏是不是就有这个链接的完整形式,我们只要读取到访客的地址栏里的这个链接,然后进行处理不就能获取到完整的数据了吗?

代码如下:

<?php
$url = $_SERVER[“REQUEST_URI”];
$searchString = “url=”; // 定义要查询的字符为url=
$url = strstr($url,$searchString);
$length = strlen($searchString);
$url = substr($url, $length);
echo $url;
?>

© 版权声明

相关文章