Как получить строку, созданную из имени файла, чтобы использовать определение языка? - PullRequest
2 голосов
/ 19 марта 2011

Я искал ответ на этот вопрос все выше и ниже:

$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) Вывести результат define (' TEXT_ {filename}, 'Это переведенныйимя файла ');а не заглавные буквы.

Может кто-нибудь помочь?

Ответы [ 3 ]

1 голос
/ 19 марта 2011

Ваш код можно переписать следующим образом:

$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 />";
}
1 голос
/ 19 марта 2011

Используйте функцию constant.

0 голосов
/ 19 марта 2011

Использование константа , как и предполагалось, сработало для меня:

$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);
  } 
}

(добавлена ​​условная проверка в случае, если имя файла не определено в языковом файле)

Спасибо всем, кто написал за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...