0

我在名为 target_passthrough 的全局变量中传递各种 URL,因此页面的 URL 可能如下所示: http ://www.mysite.com/index.php?target_passthrough=example.com

或类似的东西。该变量的格式可能有多种形式,例如(减引号):

  1. “www.example.com”
  2. “.example.com”
  3. “example.com”
  4. http://www.example.com
  5. “.example.com/subdir/”
  6. “.example.com/subdir/page.php”
  7. “example.com/subdir/page.php”

请注意其中一些如何将句点作为第一个字符,例如 2,5 和 6。

现在,我要做的就是从任何可能的 PHP 场景中提取“example.com”,并将其存储到一个变量中以便稍后回显。我尝试了 parse_url,但是当它出现时它给了我“www”,这是我不想要的。在 url 只是“example.com”的情况下,它返回一个空值。

我真的不知道如何进行正则表达式匹配,或者这是否是我需要的,所以任何指导都将不胜感激——在 php 中并不是那么先进。

4

2 回答 2

2

正如您所指出的,您可以使用parse_url为您完成大部分工作,然后简单地去掉www或前导点(如果存在)。

采用最后两个“单词”的替代策略并不总是有效,因为有像www.example.co.uk. 使用这个策略会给你co.uk而不是example.co.uk. 没有简单的规则来确定哪些部分是域或子域。

于 2010-09-04T21:10:08.170 回答
0

parse_url() 输出 URL 的不同部分的数组。您得到空值,因为您只引用数组中的第一项。parse_url()

 Array (
        [scheme] => http
        [host] => hostname
        [user] => username
        [pass] => password
        [path] => /path
        [query] => arg=value
        [fragment] => anchor 
         )
于 2010-09-04T21:18:22.113 回答