我是PHP的新手,无法弄清楚如何执行此操作:
$link = 'http://www.domainname.com/folder1/folder2/folder3/folder4';
$domain_and_slash = http://www.domainname.com . '/';
$address_without_site_url = str_replace($domain_and_slash, '', $link);
foreach ($folder_adress) {
// function here for example
echo $folder_adress;
}
我无法弄清楚如何获取$ folder_adress。
在上面的例子中,我希望函数回显这四个:
$ link会有不同数量的子文件夹......
答案 0 :(得分:2)
这可以帮助你。您可以探索更多内容:explode,parse_url,trim。查看函数的文档可以让您更好地理解如何处理url以及下面的代码如何工作。
$link = 'http://www.domainname.com/folder1/folder2/folder3/folder4';
$parts = parse_url($link);
$pathParts = explode('/', trim($parts['path'], '/'));
$buffer = "";
foreach ($pathParts as $part) {
$buffer .= $part.'/';
echo $buffer . PHP_EOL;
}
/*
Output:
folder1/
folder1/folder2/
folder1/folder2/folder3/
folder1/folder2/folder3/folder4/
*/
答案 1 :(得分:0)
1)列表方法:使用split
获取文件夹数组,然后在循环中连接它们。
2)字符串方法:使用带有偏移参数的strpos
,该参数从0到1 +最后一个位置找到斜杠,然后使用substr
提取文件夹字符串的一部分。 / p>
编辑:
<?php
$folders = 'folder1/folder2/folder3/folder4';
function fn($folder) {
echo $folder, "\n";
}
echo "\narray approach\n";
$folder_array = split('/', $folders);
foreach ($folder_array as $folder) {
if ($result != '')
$result .= '/';
$result .= $folder;
fn($result);
}
echo "\nstring approach\n";
$pos = 0;
while ($pos = strpos($folders, '/', $pos)) {
fn(substr($folders, 0, $pos++));
}
fn($folders);
?>
答案 2 :(得分:0)
您应该查看 explode() 功能
array explode ( string $delimiter , string $string [, int $limit ] )
返回一个字符串数组,每个字符串 这是形成的字符串的子串 通过在形成的边界上分裂它 通过字符串分隔符。
使用 /
作为分隔符。
答案 3 :(得分:0)
这就是你要找的东西:
$link = 'http://www.domainname.com/folder1/folder2/folder3/folder4';
$domain_and_slash = 'http://www.domainname.com' . '/';
$address_without_site_url = str_replace($domain_and_slash, '', $link);
// this splits the string into an array
$address_without_site_url_array = explode('/', $address_without_site_url);
$folder_adress = '';
// now we loop through the array we have and append each item to the string $folder_adress
foreach ($address_without_site_url_array as $item) {
// function here for example
$folder_adress .= $item.'/';
echo $folder_adress;
}
希望有所帮助。
答案 4 :(得分:0)
答案 5 :(得分:0)
试试这个:
$parts = explode("/", "folder1/folder2/folder3/folder4");
$base = "";
for($i=0;$i<count($parts);$i++){
$base .= ($base ? "/" : "") . $parts[$i];
echo $base . "<br/>";
}
答案 6 :(得分:0)
我会将preg_match()用于正则表达式方法:
$m = preg_match('%http://([.+?])/([.+?])/([.+?])/([.+?])/([.+?])/?%',$link)
// $m[1]: domain.ext
// $m[2]: folder1
// $m[3]: folder2
// $m[4]: folder3
// $m[5]: folder4