我一直在寻找这个问题的答案:
$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);
}
}
所以我想要实现的目标是:
从目录中获取文件名
删除任何空格或 - 从名称
将它们大写并加上前缀'TEXT _'
然后我的问题:
4)输出define的结果('TEXT_ {filename},'这是文件名的翻译名');而不是大写文本。
有人可以帮忙吗?
答案 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);
}
}
(在语言文件未定义的情况下添加条件检查)
感谢所有发帖求助的人!