在php中用单引号和逗号分隔名称

时间:2016-08-01 01:21:19

标签: php arrays directory

我有一个目录,其内容保存在我的数据库中的文件和子目录名称,现在我已经尝试选择所有子目录名称,所以我可以在sql选择查询中使用它,但我的问题是选定的目录显示像这样cssjspageimages。 如何用逗号和引号分隔每个目录名称,也不在姓氏中添加逗号? 我希望它看起来像'css','js','page','images'

的示例
<?php
$dirs = array_filter(glob('*'), 'is_dir');

if(!empty($dirs)){
$listdirs = ''; 
foreach ($dirs as $fileinfo){
        $result = end(explode('/', $fileinfo)); 
        $listdirs  .= $result; 
echo $listdirs;     
  }
}
?>

奖金问题 在我获得子文件和dir之类的'css','js','page','images'后,我还将添加主根目录示例'root','css','js','page','images'

这是我的代码

<?php
$cb = basename(dirname(__FILE__)); //the current base name
$root = "'".$cb."',"
echo $root . $listdirs;
?>

现在如果根目录是空的怎么办?它仍将在root的末尾添加逗号,我将在sql select中出错。 我怎么能解决这个问题

3 个答案:

答案 0 :(得分:1)

也许这个:

<?php

$dirs = array_filter(glob('*'), 'is_dir');

if (!empty($dirs)) {
  $listdirs = '';

  foreach ($dirs as $fileinfo) {
      $result = end(explode('/', $fileinfo)); 
      $listdirs .= '\'' . $result . '\','; /* Enclose the $result in quotes (') and append a comma (,) */
  }

  $listdirs = rtrim($listdirs, ','); /* Strip the trailling comma */
  echo $listdirs;     
}

编辑(回答问题编辑):

<?php

$cb = basename(dirname(__FILE__)); //the current base name
$root = "'".$cb."'" . ($listdirs ? "," . $listdirs : ""); /* Check if $listdirs contains anything... if so, append a comma (,) and $listdirs... otherwise append nothing. */
echo $root;

答案 1 :(得分:1)

如果原始问题中的任务和后续“奖励”问题可以合并,我建议将glob()返回的数据保存为数组,而不是立即将其转换为字符串。

另请注意:

  • 您可以将GLOB_ONLYDIR添加到glob(),这样您就不需要过滤结果了 通过is_dir()。
  • glob()已经返回了无路径的basename,所以我 不要以为你需要经历foreach并且爆炸结果 寻找目录名称。

如果这一切听起来都可行,那么这似乎就是你想要的:

$listdirs = "";
$dirs = glob('*', GLOB_ONLYDIR );
$cb = basename(dirname(__FILE__));

if( $cb )
    array_unshift( $dirs, $cb );

if( count( $dirs ) )
    $listdirs = "'" . implode( $dirs, "','" ) . "'";

答案 2 :(得分:0)

正如John Conde所说,你真的很亲密:)

$listdirs .= "'". $result ."',"; 

在循环之后,不要忘记删除此字符串的最后一个字符(最后一个逗号):

$listdirs = substr($listdirs,0,-1);

我认为你的&#34; echo $ listdirs;&#34;也应该在循环之外。