Php 获取不包括查询字符串的最后一个URI段

Php 获取不包括查询字符串的最后一个URI段,php,Php,我有一个网址说:www.abc.com/blog/2012/12/register car?w=Search&searchDmv=Go。我想使用php代码从中提取字符串register car。请提供帮助。您正在查找函数,后跟basename以返回最后一个/item/。以下打印登记车辆 $parsed = parse_url("http://www.abc.com/blog/2012/12/register-car?w=Search&searchDmv=Go", PHP_URL_HO

我有一个网址说:
www.abc.com/blog/2012/12/register car?w=Search&searchDmv=Go
。我想使用php代码从中提取字符串
register car
。请提供帮助。

您正在查找函数,后跟basename以返回最后一个/item/。以下打印
登记车辆

  $parsed = parse_url("http://www.abc.com/blog/2012/12/register-car?w=Search&searchDmv=Go", PHP_URL_HOST);
  echo basename($parsed['path']);
试试这个:

<?php 

 $url = "www.abc.com/blog/2012/12/register-car?w=Search&searchDmv=Go";

 $register_car = basename(parse_url($url, PHP_URL_PATH));

 echo $register_car; // will echo "register-car"

?>

您可以使用和的组合,甚至可以帮助您实现这一点

在PHP中<5.4.7

$url = "www.abc.com/blog/2012/12/register-car?w=Search&searchDmv=Go";
$result = basename(parse_url("http://" . $url, PHP_URL_PATH));
echo $result; // register-car
在PHP中>=5.4.7

$url = "www.abc.com/blog/2012/12/register-car?w=Search&searchDmv=Go";
$result = basename(parse_url("//" . $url, PHP_URL_PATH));
echo $result; // register-car

你应该测试你的代码。函数不接受分隔符作为第二个参数。此外,该代码将被证明是非常错误的,因为它没有考虑URL可能包含片段。。猜猜看,当我不睡觉的情况下快速回答问题时会发生什么……这发生在我们中最好的人身上。我只是想也许你可以编辑它来反映正确的行为,因为它仍然是新鲜的:)不,没关系。。我不想像你上面的人那样,给出一个仓促的答案,然后在你给出了一个更雄辩的答案后再纠正两三次,然后让他们的答案被选为正确;)-至少你是诚实的。这是一个令人钦佩的品质:)嗯,这并不完全准确。它可能在这种特殊情况下工作,但需要注意的是,parse_url并不保证它可以解析部分url。因此,例如,如果我想从这个URL中获得主机名,而不包括该方案,我将得到错误的结果<代码>var_dump(解析url(“www.abc.com/blog/2012/12/register car?w=Search&searchDmv=Go”,PHP_url_HOST))
给你
NULL
Woops,是的,前面的评论是不明确的。不要期望它在没有使用完整URL的情况下工作。我举个例子#解析url页面上的#2是由您提供的?:DCan您能告诉我如何从相同的代码中获得2012作为输出。警告:出于安全原因,parse_url()已被禁用。您能帮我解决这个问题吗?听起来好像您的系统管理员在php.ini中添加了这个函数,这听起来很奇怪,因为这个函数几乎没有我能想到的安全风险。您需要联系负责PHP安装的人员,询问他们是否可以从PHP.ini中的disable_functions指令中删除此函数。
$parts = parse_url("www.abc.com/blog/2012/12/register-car?w=Search&searchDmv=Go", PHP_URL_PATH);
$pieces = explode($parts, "/");
$action = $pieces[count($pieces)-1];