Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中提取URL的特定点_Php_Url_Extract - Fatal编程技术网

在PHP中提取URL的特定点

在PHP中提取URL的特定点,php,url,extract,Php,Url,Extract,我正在尝试使用PHP获取URL的一个非常特定的部分,以便以后可以将其用作变量 我的网址是: 我试图提取的特定部分是/clubs/和-默认Club位之间的11部分 我想知道最好的方法是什么。我在这里看到过使用正则表达式式解析器的示例,但对于这个特定的实例,我无法理解它 谢谢 编辑;这是我迄今为止使用explode查询所尝试的,但它似乎为我提供了上面URL中不存在的各种元素: $url = $_SERVER['REQUEST_URI']; $url = explode('/', $url); $u

我正在尝试使用PHP获取URL的一个非常特定的部分,以便以后可以将其用作变量

我的网址是:

我试图提取的特定部分是
/clubs/
-默认Club
位之间的
11
部分

我想知道最好的方法是什么。我在这里看到过使用正则表达式式解析器的示例,但对于这个特定的实例,我无法理解它

谢谢

编辑;这是我迄今为止使用explode查询所尝试的,但它似乎为我提供了上面URL中不存在的各种元素:

$url = $_SERVER['REQUEST_URI'];
$url = explode('/', $url);
$url = array_filter($url);
$url = array_merge($url, array());
返回:

Array ( [0] => index.php?app=core&module=system&controller=widgets&do=getBlock&blockID=plugin_9_bimBlankWidget_dqtr03ssz&pageApp=core&pageModule=clubs&pageController=view&pageArea=header&orientation=horizontal&csrfKey=8e19769b95c733b05439755827a98ac8 )

如果希望带破折号(
11 Default Club
)的字符串始终位于末尾,则可以尝试以下操作:

$url = $_SERVER['REQUEST_URI'];
$urlParts = explode('/', $url);
$string = end($urlParts);
$stringParts = explode('-', $string);
$theNumber = $stringParts[0]; // this will be 11

如果希望带破折号(
11 Default Club
)的字符串始终位于末尾,则可以尝试以下操作:

$url = $_SERVER['REQUEST_URI'];
$urlParts = explode('/', $url);
$string = end($urlParts);
$stringParts = explode('-', $string);
$theNumber = $stringParts[0]; // this will be 11

如果这个url结构对于您站点中的所有url都是固定的,那么下面是获得您的价值的最佳方式

<?php
$url = "https://forums.mydomain.com/index.php?/clubs/11-Default-Club";
$url = explode('/', $url);
$url = array_filter($url);
$end = end($url);
$end_parts = explode('-',$end);
echo $end_parts[0];

如果这个url结构对于您站点中的所有url都是固定的,那么下面是获得您的价值的最佳方式

<?php
$url = "https://forums.mydomain.com/index.php?/clubs/11-Default-Club";
$url = explode('/', $url);
$url = array_filter($url);
$end = end($url);
$end_parts = explode('-',$end);
echo $end_parts[0];

如果此URL结构适用于站点中的所有URL,并且您只希望获取URL的整数/数字/数字部分:

<?php
$url = 'https://forums.mydomain.com/index.php?/clubs/11-Default-Club';
$int = (int) filter_var($url, FILTER_SANITIZE_NUMBER_INT);
echo $int;

如果此URL结构适用于站点中的所有URL,并且您只希望获取URL的整数/数字/数字部分:

<?php
$url = 'https://forums.mydomain.com/index.php?/clubs/11-Default-Club';
$int = (int) filter_var($url, FILTER_SANITIZE_NUMBER_INT);
echo $int;

我宁愿直截了当地说:

<?php
$url     = 'https://forums.mydomain.com/index.php?/clubs/11-Default-Club';
$query   = parse_url($url, PHP_URL_QUERY);
$pattern = '@^/clubs/(\d+)[a-zA-Z-]+$@';
$digits  = preg_match($pattern, $query, $matches)
            ? $matches[1]
            : null;

var_dump($digits);

我宁愿直截了当地说:

<?php
$url     = 'https://forums.mydomain.com/index.php?/clubs/11-Default-Club';
$query   = parse_url($url, PHP_URL_QUERY);
$pattern = '@^/clubs/(\d+)[a-zA-Z-]+$@';
$digits  = preg_match($pattern, $query, $matches)
            ? $matches[1]
            : null;

var_dump($digits);


显示您当前的attemptRegex似乎有些过分。在这种情况下,一个简单的方法应该有效。你应该先尝试一下。如果您无法让它工作,请回来,向我们展示您尝试过的内容、预期的结果、您得到的结果,我们可以从中帮助您。@AleksG是按要求添加的。您添加的代码毫无意义。看起来更像是方法调用的随机集合。另外,我根本看不出如何从输入URL获得显示的结果。您要做的是使用
分解
/
字符分割,然后再次使用
分解
-
字符分割。如果这是url中唯一可用于仅获取INT部分的数字,则显示您当前的attemptRegex似乎有些过分。在这种情况下,一个简单的方法应该有效。你应该先尝试一下。如果您无法让它工作,请回来,向我们展示您尝试过的内容、预期的结果、您得到的结果,我们可以从中帮助您。@AleksG是按要求添加的。您添加的代码毫无意义。看起来更像是方法调用的随机集合。另外,我根本看不出如何从输入URL获得显示的结果。您想要的是使用
explode
/
字符分割,然后再次使用
explode
-
字符分割。如果这是url中唯一可用于仅获取整数部分的数字,为什么这是最好的方法?因为使用此方法可以正确地获得预期结果。你有没有其他方法可以给出答案。为什么这是最好的方法?因为使用它你可以得到预期的结果。如果
clubs
url部分前面有一个数字怎么办?到目前为止,
clubs
部分前面的数字不是问题的一部分。(这就是为什么我提到“如果此URL结构对所有URL都是固定的”)如果
clubs
URL部分前面有一个数字会怎么样?到目前为止
clubs
部分前面的数字不是问题的一部分。(这就是为什么我提到“如果这个URL结构对所有URL都是固定的”)这是唯一有效的方法。这是唯一有效的方法。