在PHP中提取URL的特定点
我正在尝试使用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
/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都是固定的”)这是唯一有效的方法。这是唯一有效的方法。