删除数组中的随机逗号

时间:2018-12-06 02:23:55

标签: php html arrays

我正在用PHP创建自动索引。 我正在尝试对文件夹中的文件数组进行排序。这是我的代码的一部分:

<?php
    $cmd = shell_exec("ls -m");
    $cmdsk = str_replace(", ","\n","$cmd");
    $divide = explode("\n", $cmdsk);
    array_pop($divide);
    foreach( $divide as $path ) {
       echo "<th class=\"icon\"><img src=\"/beta/.res/save.png\"></th><th><a href=\"{$path}\">{$path}</a></th></tr>";
    }
?>

ls -m的输出如下:

file1, file2, file3, etc...

但是由于某种原因,在此代码创建的数组中,诸如“ file1,file2”之类的变量会随机出现。我解决了这个问题。唯一令我困扰的是,随机变量如“ file3”经常出现。它的末尾带有逗号,因此它“损坏”了文件名和文件路径(可能已损坏)。

所以我的问题是,如何删除出现在数组变量末尾的那些随机逗号?

干杯。

2 个答案:

答案 0 :(得分:1)

ls -m的输出在同一行的名称之间带有逗号,后跟一个空格,并且在每行的末尾也带有一个逗号,后跟一个换行符。您要用换行符替换逗号空间,但要保持逗号换行符不变。您需要同时替换两者。

$cmdsk = str_replace([", ", ",\n"],"\n","$cmd");

我不确定为什么要解析ls而不是使用PHP的内置目录列表功能,如glob()。您也可以使用ls -1代替ls -m,这会将每个文件名放在自己的行中。

答案 1 :(得分:0)

$path = trim($path);

if ($path[strlen($path) - 1] == ',') $path = substr($path, 0, -1);

不是最漂亮的代码,但是它将删除$ path之前和之后的所有空格,检查最后一个字符是否为逗号,如果是,则将其删除。

您也可以将str_replace仅使用逗号而不使用空格,例如:

$cmdsk = str_replace(",", "\n", $cmd);

或直接将explode()与逗号一起使用。