繁体   English   中英

当字符串变量中有URL时,如何在PHP中使用parse_url?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM