php将字符串数组拆分为<;ul>&书信电报;李>;
您好,我的问题是,我有一个字符串数组列表,其中包含服务器上.txt文件的路径 例如:php将字符串数组拆分为<;ul>&书信电报;李>;,php,Php,您好,我的问题是,我有一个字符串数组列表,其中包含服务器上.txt文件的路径 例如: // list all textfiles $list = findFiles(dirname(__FILE__), array ("txt") ); // sort list array_multisort($list["txt"], SORT_ASC, SORT_STRING ); // iterate through list and print out found files as ul-li list
// list all textfiles
$list = findFiles(dirname(__FILE__), array ("txt") );
// sort list
array_multisort($list["txt"], SORT_ASC, SORT_STRING );
// iterate through list and print out found files as ul-li list
foreach ($list["txt"] as $file_entry) {
echo '<li>$file_entry</li>\n';
}
//列出所有文本文件
$list=findFiles(dirname(_文件),数组(“txt”);
//排序表
数组\多排序($list[“txt”]、排序\ ASC、排序\字符串);
//遍历列表并将找到的文件打印为ul li列表
foreach($list[“txt”]作为$file\u条目){
echo'$file\u条目 \n';
}
这让我有了这样的感觉:
<li>path1\path\chek.txt</li>
<li>path1\path\test\check2.txt</li>
<li>path1\path1\test\check.txt</li>
<li>path2\test\pt\check1.txt</li>
<li>path2\test\pt\check2.txt</li>
<li>path2\test\check2.txt</li>
<li>path2\path2\check.txt</li>
<li>path2\path3\dir.txt</li>
<li>path2\path3\test\check.txt</li>
<li>path3\path3\test\check1.txt</li>
path1\path\chek.txt
路径1\path\test\check2.txt
path1\path1\test\check.txt
路径2\test\pt\check1.txt
路径2\test\pt\check2.txt
路径2\test\check2.txt
path2\path2\check.txt
路径2\path3\dir.txt
路径2\path3\test\check.txt
path3\path3\test\check1.txt
我想将该数组“转换”成类似于目录树的东西(以便以后使用一些jquery插件[例如]:
- 路径1
- 路径
- 路径1
...
所以问题是如何从我的数组中生成这样一个目录列表?我认为最好使用“\”作为分隔符将每个字符串“分解”为一个数组(),而不是将所有表合并到一个多数组中
['path1']=>['path']=>"chek.txt"
=>['path']=>['test']=>"check2.txt"
=>['path']=>['test']=>"check.txt"
最后,为每个新数组添加一个
“”
标记!以下是我得到的结果,将路径转换为嵌套数组,然后递归合并它们,然后使用递归函数格式化,将其打印为列表
$list['txt'] = array(
'path1\path\chek.txt',
'path1\path\test\check2.txt',
'path1\path1\test\check.txt',
'path2\test\pt\check1.txt',
'path2\test\pt\check2.txt',
'path2\test\check2.txt',
'path2\path2\check.txt',
'path2\path3\dir.txt',
'path2\path3\test\check.txt',
'path3\path3\test\check1.txt'
);
$paths = array();
foreach ($list['txt'] as $file_entry) {
$path = explode('\\', $file_entry);
$pathArr = $file_entry;
for ($i = count($path) - 1; $i >= 0; $i--) {
$pathArr = array($path[$i] => $pathArr);
}
$paths = array_merge_recursive($paths, $pathArr);
}
function to_list($paths, $depth = 0) {
echo str_repeat("\t", $depth) . "<ul>\n";
foreach ($paths as $entry => $value) {
echo str_repeat("\t", $depth + 1) . '<li>';
if (is_array($value)) {
echo "$entry\n";
to_list($value, $depth + 2);
echo "\n" . str_repeat("\t", $depth + 1);
} else {
echo "<a href=\"{$_SERVER['PHP_SELF']}?file=$value\">$entry</a>";
}
echo "</li>\n";
}
echo str_repeat("\t", $depth) . "</ul>\n";
}
to_list($paths);
$list['txt']=数组(
'path1\path\chek.txt',
'path1\path\test\check2.txt',
'path1\path1\test\check.txt',
'path2\test\pt\check1.txt',
'path2\test\pt\check2.txt',
'path2\test\check2.txt',
'path2\path2\check.txt',
'path2\path3\dir.txt',
'path2\path3\test\check.txt',
'path3\path3\test\check1.txt'
);
$path=array();
foreach($list['txt']作为$file\u条目){
$path=explode(“\\”,$file\u entry);
$pathArr=$file\u条目;
对于($i=count($path)-1;$i>=0;$i--){
$pathArr=数组($path[$i]=>$pathArr);
}
$paths=数组\合并\递归($paths,$pathArr);
}
函数到_列表($path,$depth=0){
回声str\u重复(“\t”,深度)。“\n”;
foreach($entry=>$value的路径){
回声str_重复(“\t”,$depth+1)。”- ;
if(是_数组($value)){
回显“$entry\n”;
to_列表($value,$depth+2);
回声“\n”.str\u重复(“\t”,$depth+1);
}否则{
回声“;
}
回声“
\n”;
}
回声重复(“\t”,$depth)。“
\n”;
}
to_列表($path);
谢谢,这是有效的。唯一缺少的是“echo”$entry”语句中文件的完整路径,知道如何实现吗?是的,应该可以通过将完整文件路径指定为$pathArr
末尾的值,然后在href中使用该路径。我将更新我的答案以进行演示。
$list['txt'] = array(
'path1\path\chek.txt',
'path1\path\test\check2.txt',
'path1\path1\test\check.txt',
'path2\test\pt\check1.txt',
'path2\test\pt\check2.txt',
'path2\test\check2.txt',
'path2\path2\check.txt',
'path2\path3\dir.txt',
'path2\path3\test\check.txt',
'path3\path3\test\check1.txt'
);
$paths = array();
foreach ($list['txt'] as $file_entry) {
$path = explode('\\', $file_entry);
$pathArr = $file_entry;
for ($i = count($path) - 1; $i >= 0; $i--) {
$pathArr = array($path[$i] => $pathArr);
}
$paths = array_merge_recursive($paths, $pathArr);
}
function to_list($paths, $depth = 0) {
echo str_repeat("\t", $depth) . "<ul>\n";
foreach ($paths as $entry => $value) {
echo str_repeat("\t", $depth + 1) . '<li>';
if (is_array($value)) {
echo "$entry\n";
to_list($value, $depth + 2);
echo "\n" . str_repeat("\t", $depth + 1);
} else {
echo "<a href=\"{$_SERVER['PHP_SELF']}?file=$value\">$entry</a>";
}
echo "</li>\n";
}
echo str_repeat("\t", $depth) . "</ul>\n";
}
to_list($paths);