我的代码中有以下网址,我想拆分它并从中获取数字
例如,从以下网址需要获取123456
https://review-test.com/#/c/123456/
我试过这个并且它无法正常工作
$completeURL = https://review-test.com/#/c/123456/ ;
list($url, $number) = explode('#c', preg_replace('/^.*\/+/', '', $completeURL));
答案 0 :(得分:3)
这是专门为这类事做的。
答案 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/");
?>
答案 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);
explode('/', $url_fragment);
函数将返回一个带有空索引的数组,其中'/'被解除array_filter($fragments);
带修剪选项的array_map将删除多余的空格。它不是
在这种情况下适用,但在实际情况下你最好修剪。array_values($fragments)