【发布时间】:2011-03-29 21:47:36
【问题描述】:
我有一个源文件,该文件包含要翻译的字符串。翻译缓存文件的每一行包含一个Source string,然后是分隔符/分隔符█,然后是translated string
原来的老作者确实写了一个很好的清理脚本,如果旧源不再使用它们,它会清除缓存文件中的重复文件或从缓存中删除整行。
现在我想在现有代码(下面的相关部分)中再添加一个功能,即:当在分隔键 █ 之后绝对没有任何 '' 用于同一行时,删除整行它正在检查。
我感觉它将是下面某处的 1 行代码。但是这条线在哪里呢? 非常感谢您的帮助。提前非常感谢。
当前缓存文件:
Bla blaaaa bla blaa blaaaaa bla█Bla blaaaa bla blaa blaaaaa bla
Zorro in zeppelin from zimbabwe█
Bla blaaaa bla blaa blaaaaa bla█Bla blaaaa bla blaa blaaaaa bla
Water wave with whistling whale█
我的目标缓存文件:
Bla blaaaa bla blaa blaaaaa bla█Bla blaaaa bla blaa blaaaaa bla
Bla blaaaa bla blaa blaaaaa bla█Bla blaaaa bla blaa blaaaaa bla
现有代码:
$translation_key_value_separator = '█';
// Read file contents and create a used keys array
$used_keys = array();
get_used_keys($dir_to_clean, &$used_keys);
// Cleanup translations: removes an entire line from the translation cache file
// if the LEFT part of the █ is not existend (anymore) in the source files.
$removed = array();
$counter = 0;
foreach (glob($dir_translation_files . "/*.$translation_ext") as $filepath) {
$filename = get_filename($filepath);
$key_values = explode("\n", file_get_contents($filepath));
$clean_file = array();
foreach($key_values as $key_value){
list($key, $value) = explode($translation_key_value_separator, $key_value);
if($key != ''){
if(in_array($key, $used_keys)){
$clean_file[] = $key . $translation_key_value_separator . $value;
}else{
$removed[$filename][] = $key;
$counter++;
}
}
}
【问题讨论】:
标签: php arrays string delimiter