获取PHP url字符串中的步骤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
$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