如何获取从文件名构造的字符串以使用语言定义?

时间:2011-03-19 14:17:29

标签: php arrays text

我一直在寻找这个问题的答案:

$file_type_array = array();
$file_type_array[] = array('id' => $file, 'text' => PULL_DOWN_DEFAULT);
  while ($file = readdir($resc)) {
  $ext = strrchr($file, ".");
  if ($ext == ".php") {
    $filename = str_replace(' ', "_", $file);
    $filename = str_replace('-', "_", $filename);
    $filename = str_replace($ext, "", $filename);

    $string_define_filename = 'TEXT_' . strtoupper($filename);

    $file_type_array[] = array('id' => $file, 'text' => $string_define_filename);
  }
}

所以我想要实现的目标是:

  1. 从目录中获取文件名

  2. 删除任何空格或 - 从名称

  3. 将它们大写并加上前缀'TEXT _'

  4. 然后我的问题:

    4)输出define的结果('TEXT_ {filename},'这是文件名的翻译名');而不是大写文本。

    有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

使用constant功能。

答案 1 :(得分:1)

您的代码可以重写如下:

$file_type_array[] = array('id' => $file, 'text' => PULL_DOWN_DEFAULT);
 while ($file = readdir($resc)) {
  $f = pathinfo($file);
  if ($f['extension'] == "php") {
    $filename = preg_replace('/[^\w\d]+/i','_',$f['filename']);
    $string_define_filename = 'TEXT_' . strtoupper($filename);
    define($string_define_filename,$file); //optional
    $file_type_array[] = array('id' => $filename, 'text' => constant($string_define_filename));
  }  
}
foreach( $file_type_array as $def ) {
       echo $def['text'] . "<br />";
}

答案 2 :(得分:0)

根据建议使用常量,这对我有用:

$file_type_array = array();
$file_type_array[] = array('id' => $file, 'text' => PULL_DOWN_DEFAULT);
while ($file = readdir($resc)) {
  $ext = strrchr($file, ".");
  if ($ext == ".php") {
    $filename = str_replace(' ', "_", $file);
    $filename = str_replace('-', "_", $filename);
    $filename = str_replace($ext, "", $filename);

  if (constant('TEXT_' . strtoupper($filename)) != null) {
    $filename_string = constant('TEXT_' . strtoupper($filename));
  } else {
    $filename_string = 'Missing language define for TEXT_' . strtoupper($filename);
}

  $file_type_array[] = array('id' => $file, 'text' => $filename_string);
  } 
}

(在语言文件未定义的情况下添加条件检查)

感谢所有发帖求助的人!