[英]How can I parse_url in PHP when there is a URL in a string variable?
我当然是一个PHP新手,所以我需要一些帮助。
我正在为我的网站创建一个自行设计的联盟计划,并可以选择联盟会员在其链接中添加子ID以进行跟踪。 如果没有对输入的内容进行控制,我就会测试不同的场景,并在输入完整的URL时发现错误(即“ http://example.com ”)。
在我的PHP中,我可以从字符串中获取变量没问题。 我的问题来自于我获得引用URL并解析它(因为我需要解析引用URL以获取主机鬃毛用于其他用途)。 代码如下:
$refURL = getenv("HTTP_REFERER");
$parseRefURL = parse_url($refURL);
传入链接时的工作(例如):
http://example.com/?ref=REFERRER'S-ID&sid=www.test.com
传入链接时出错(注意在“sid =”之后添加“http://”):
http://example.com/?ref=REFERRER'S-ID&sid=http://www.test.com
这是警告信息:
警告:parse_url(/?ref = REFERRER'S-ID&sid = http://www.test.com )[function.parse-url]:无法解析/home4/directory'/public_html/hosterdoodle/header.php中的网址28号线
当有人决定将URL放在变量中时,有关如何防止parse-url函数被抛弃的任何想法? (我实际上测试了这个问题,它会在变量中以“:/”为单位抛出错误)
以下部分代码:
$url = "http://example.com/?ref=REFERRER'S-ID&sid=http://www.test.com";
$data = parse_url($url);
var_dump($data);
对我来说工作正常(PHP 5.3.2) ,并给出以下输出:
array
'scheme' => string 'http' (length=4)
'host' => string 'example.com' (length=11)
'path' => string '/' (length=1)
'query' => string 'ref=REFERRER'S-ID&sid=http://www.test.com' (length=41)
您确定要将完整的URL传递给parse_url
吗?
如果我使用这部分代码:
$url = "/?ref=REFERRER'S-ID&sid=http://www.test.com";
$data = parse_url($url);
我得到了和你一样的警告:
Warning: parse_url(/?ref=REFERRER'S-ID&sid=http://www.test.com)
[function.parse-url]: Unable to parse URL
但这是在没有传递完整URL的时候......
为什么不使用str_replace $refURL
http://来清理$refURL
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.