PHP中的SPLIT URL

时间:2017-12-06 11:49:51

标签: php regex

我的代码中有以下网址,我想拆分它并从中获取数字

例如,从以下网址需要获取123456

https://review-test.com/#/c/123456/

我试过这个并且它无法正常工作

$completeURL  = https://review-test.com/#/c/123456/  ; 

  list($url, $number) = explode('#c', preg_replace('/^.*\/+/', '', $completeURL));

7 个答案:

答案 0 :(得分:3)

使用parse_url

这是专门为这类事做的。

答案 1 :(得分:2)

您可以在不使用正则表达式的情况下执行此操作 -

$completeURL  = 'https://review-test.com/#/c/123456/'  ; 

list($url, $number) = explode('#c', str_replace('/', '', $completeURL));

echo $number;

答案 2 :(得分:0)

你应该试试这个:basename

basename - 返回路径的尾随名称组件

<?php

echo basename("https://review-test.com/#/c/123456/");

?>

演示:http://codepad.org/9Ah83qaP

答案 3 :(得分:0)

随后您可以直接从纯正则表达式获取字符串中的数字

preg_match('!\d+!', "https://review-test.com/#/c/123456/", $matches);
print_r($matches);

工作demo

答案 4 :(得分:0)

简单地:

$tmp = explode( '/', $completeUrl).end();

它将通过&#39; /&#39;爆炸字符串并采取最后一个元素

答案 5 :(得分:0)

如果您没有除正则表达式之外的其他选项,则对于您的示例数据,您可以使用preg_match拆分您的网址,而不是preg_replace

方法可以是

  • 将第一部分作为一个组(.+\/)
  • 捕获
  • 然后将您的号码作为一个组(\d+)
  • 捕获
  • 后面是\/$/
  • 行末尾的正斜杠

这将使用网址中的最后一个数字,后跟正斜杠。

然后您可以使用list并跳过$matches数组的第一项,因为它将包含与完整模式匹配的文本。

$completeURL  = "https://review-test.com/#/c/123456/";
preg_match('/(.+\/)(\d+)\/$/', $completeURL, $matches);
list(, $url, $number) = $matches;

答案 6 :(得分:0)

如果您想获得 / c / 123456 / 参数,您需要执行以下操作:

$url = 'https://review-test.com/#/c/123456/';
$url_fragment = parse_url($url, PHP_URL_FRAGMENT);
$fragments = explode('/', $url_fragment);
$fragments = array_filter(array_map('trim', $fragments));
$fragments = array_values($fragments);
  1. PHP_URL_FRAGMENT 会在
  2. 之后返回网址的组件
  3. 在parse_url之后,您最终会得到一个字符串,如下所示:'/ c / 123456 /'
  4. explode('/', $url_fragment);函数将返回一个带有空索引的数组,其中'/'被解除
  5. 为了删除空索引array_filter($fragments); 带修剪选项的array_map将删除多余的空格。它不是 在这种情况下适用,但在实际情况下你最好修剪。
  6. 现在,如果你var_dump结果,你可以看到数组需要 重新编制索引array_values($fragments)