如何使用PHP获取自定义参数值

如何使用PHP获取自定义参数值,php,get,Php,Get,我有一个带有URL的PHP页面:http://www.example.com/out?redirect=http%3A%2F%2Fwww.google.it/sample-测试我想要一个PHP函数来打印这个:Google.it 我只需要用大写字母打印域名,其他什么都不需要 目前我使用: <?php echo $_GET['redirect']; ?> 它获取重定向中包含的完整URL,但我希望域名带有大写字母。您需要首先解码URL,以便使用注释中提到的解析URL。这里有一个选择,

我有一个带有URL的PHP页面:
http://www.example.com/out?redirect=http%3A%2F%2Fwww.google.it/sample-测试
我想要一个PHP函数来打印这个:
Google.it

我只需要用大写字母打印域名,其他什么都不需要

目前我使用:

<?php
echo $_GET['redirect']; ?>


它获取
重定向中包含的完整URL
,但我希望域名带有大写字母。

您需要首先解码URL,以便使用注释中提到的
解析URL
。这里有一个选择,它的概念是www.将永远被使用

  • 解码url(
    urldecode()
  • 解析url以仅获取主机(
    parse\uURL($url,PHP\uURL\uhost)
  • 删除www.(
    str\u replace('www.,'',$url)
  • 大写字符串的第一个字母(
    ucfirst()
  • 一行:
    ucfirst(str\u replace('www.,'',parse\u url(urldecode($\u GET['redirect']),PHP\u url\u HOST))

    尝试以下操作:

    preg_match("/http:\/\/(?:.*?\.)?(.+?)\//", $_GET['redirect'], $matches);
    
    echo ucfirst($matches[1]);
    
    以下是reg ex测试:


    parse\u url
    函数应该有帮助您可以使用regex,这取决于
    it
    是否是您唯一关心的TLD?不,它只是一个示例。我使用.it.com.net等。有时URL没有www。我该怎么办?如果没有
    www
    str\u replace
    将只返回原始名称。您确定需要调用
    urldecode
    ?PHP将在设置
    $\u GET['redirect']
    @Barmar good point时自动执行此操作。测试时我只使用了一个名为
    $url
    的字符串变量,因此我必须包含
    decode()
    。它可以工作,但只得到第一个字母。示例:GI调整了正则表达式,它现在应该可以工作了。请尝试打印\r($matches)。正如您在regex101链接中看到的那样,这对我很有效。添加了一个图像,显示这非常有效。好的,它可以工作,但我看到它也有子域。是否可以仅获取域?e、 g.sample.example.com->打印sample.example.com时的example.com