获取PHP url字符串中的步骤url

获取PHP url字符串中的步骤url,php,Php,假设我有这样的url $a= "http://zz.com/1/2/3/4/5/6/7"; 比如说url可以有很多步骤,比如1、2、3,比如说它最多有3个步骤,或者有时最多有7个步骤 我想从$a获得这样的url $b="http://zz.com/"; $c="http://zz.com/1/"; $d="http://zz.com/1/2/"; $e="http://zz.com/1/2/3/"; ... ... $k= "http://zz.com/1/2/3/4/5/6/; 有可能在p

假设我有这样的url

$a= "http://zz.com/1/2/3/4/5/6/7";
比如说url可以有很多步骤,比如1、2、3,比如说它最多有3个步骤,或者有时最多有7个步骤

我想从$a获得这样的url

$b="http://zz.com/";
$c="http://zz.com/1/";
$d="http://zz.com/1/2/";
$e="http://zz.com/1/2/3/";
...
...
$k= "http://zz.com/1/2/3/4/5/6/;
有可能在php中做这样的事情吗

多谢各位


我尝试使用php url解析和分解,但在数组的开头和结尾都得到空值。

您可以尝试以下代码:-

<?php
$a= $_SERVER['REQUEST_URI'];//"http://zz.com/1/2/3";
$url = explode('/',str_replace('http://', '', $a));

$next_num = count($url);

echo $next_url = $a.'/'.$next_num;//wil print :- http://zz.com/1/2/3/4

?>

非常简单的方法是使用explode()函数

[EDIT]使其在必要时使用字母作为变量

$a= "http://zz.com/14/2/13/4/5/8/7";

//grab the protocol and addy
$x = explode('//',$a);
$y = explode('/',$x[1]);

$letters = array();

$letters[1] = 'a';
$letters[2] = 'b';
$letters[3] = 'c';
$letters[4] = 'd';
$letters[5] = 'e';
$letters[6] = 'f';
$letters[7] = 'g';
$letters[8] = 'h';
$letters[9] = 'i';
$letters[10] = 'j';


//loop through various steps
for($i = 1; $i<=count($y); $i++)
{
  $$letters[$i] = $x[0].'//'.$y[0].'/';
  for($k=0; $k<$i; $k++)
  {
    $$letters[$i] .= $y[$k].'/';
  }
}

echo $a."\n";
echo $b."\n";
echo $c."\n";
echo $d."\n";
echo $e."\n";
echo $f."\n";
echo $g."\n";
echo $h."\n";
您可以在此处看到工作的代码:
[编辑:此处有字母]

是的,您可以,而且非常简单,使用名为的内置函数提取URL的某些部分是很好的

$url = "http://zz.com/1/2/3/4/5/6/7";

$pathvars = parse_url($url);
$urls = [];
$glue = '';
$counter = 'a';
foreach ($path as $part) {
    $glue .= "$part/";
    $urls[$counter++] = sprintf("%s://%s%s", $pathvars['scheme'], substr($pathvars['host'], 0, strlen($pathvars['host']) -1), substr($glue, 0, strlen($glue) - 1));
}

// extract to variables
extract($urls, EXTR_OVERWRITE);

echo $a . PHP_EOL;
echo $b . PHP_EOL;
echo $c . PHP_EOL; 
echo $d . PHP_EOL; // etc
print_r($urls); // all array of urls

您可以使用.htaccess并将url值设置为参数。仅使用.htaccess一次是不好的,不是吗?请使用explode函数。。。工作起来很有魅力。。。下面是我的答案,最好是展示你已经尝试过的东西,这样我们可以从中帮助你。你的帖子没有显示任何研究的努力,也没有任何试图尝试的代码,只是说你的意思是/4可以在/1之前出现。你希望注释中url之后的下一个url是什么?它只获取每个步骤,而不获取每个增量步骤是的,这是我真正想要的。我只是修改了这篇文章,因为人们认为数字是按升序排列的。我对它进行了编辑,以显示数字不是按顺序排列的,如果你想的话,你“可以”使用字母变量。如果这对您有效,请将其标记为答案。为你的工作和研究干杯:)。与编辑.htaccess相比,我更喜欢这种方法。不使用.htaccess文件的原因有很多。使用.htaccess
$letters=range('a','j')是不可移植或不稳定的试试看
$url = "http://zz.com/1/2/3/4/5/6/7";

$pathvars = parse_url($url);
$urls = [];
$glue = '';
$counter = 'a';
foreach ($path as $part) {
    $glue .= "$part/";
    $urls[$counter++] = sprintf("%s://%s%s", $pathvars['scheme'], substr($pathvars['host'], 0, strlen($pathvars['host']) -1), substr($glue, 0, strlen($glue) - 1));
}

// extract to variables
extract($urls, EXTR_OVERWRITE);

echo $a . PHP_EOL;
echo $b . PHP_EOL;
echo $c . PHP_EOL; 
echo $d . PHP_EOL; // etc
print_r($urls); // all array of urls