在php中上传为csv文件时将法语转换为英文
问题描述:
我正在使用此方法将法语转换为英语。当我从我的html表单中获得法语字符时,它的效果很好。但我必须上传包含法文字符的csv文件。它在上传csv文件时没有转换。在php中上传为csv文件时将法语转换为英文
这是我的代码,同时上传CSV
function UploadQuiz(){
$row =& $this->getTable('quiz');
$fileName='uploadFile';
$fileName=$_FILES['uploadFile']['tmp_name'];
$f = fopen($fileName,"r");
$success_counter=0; $failure_counter=0;
while (($data = fgetcsv($f, 10000, ",")) !== FALSE){
//perform string escapes so data is entered into database correctly
$quiz_question = $data[0];
$option_a = $data[1];
$option_b = $data[2];
$option_c = $data[3];
$option_d = $data[4];
$option_e = $data[5];
$quiz_answer = $data[6];
$quiz_explanation = $data[7];
$quiz_difficulty = $data[8];
$chapter_id = $data[9];
$chapter=$this->check_chapter_id_exist($this->_data['course_id'],$chapter_id);
if(!$chapter->chapter_id){
$failure_counter++;
continue;
}
$data['quiz_id'] = '';
$data['course_id'] = $this->_data['course_id'];
$data['quiz_question'] = $this->_convertgsm->convertgsm($quiz_question);
$data['quiz_optionA'] = $this->_convertgsm->convertgsm($option_a);
$data['quiz_optionB'] = $this->_convertgsm->convertgsm($option_b);
$data['quiz_optionC'] = $this->_convertgsm->convertgsm($option_c);
$data['quiz_optionD'] = $this->_convertgsm->convertgsm($option_d);
$data['quiz_optionE'] = $this->_convertgsm->convertgsm($option_e);
return $data;
}
这里我的方法在我的PHP文件:
function convertgsm($data){
$normalizeChars = array(
'`'=>"'",'Ë'=>'E','Â'=>'A','À'=>'A','Í'=>'I', 'Ì'=>'I', 'Ã'=>'A', 'Î'=>'I', 'Ä'=>'A','Ç'=>'C','Ò'=>'O','Ï'=>'I','È'=>'E','Ó'=>'O','É'=>'E','Ô'=>'O','Ê'=>'E','Õ'=>'O','Ö'=>'O','ê'=>'e','Ù'=>'U','ë'=>'e','Ú'=>'U','ë'=>'e','Ú'=>'U','î'=>'i','Û'=>'U','Û'=>'U','Ü'=>'U','ô'=>'o','Ý'=>'Y','õ'=>'o','â'=>'a','û'=>'u','ã'=>'a','ÿ'=>'y','ç'=>'c','ï'=>'i'
);
$result_data = strtr($data, $normalizeChars);
return $result_data;
}
你能帮我去法国,而上传CSV文件转换成英文?
答
用法1
$translate = new TranslateCSV();
$str = 'who will win à wôrld cup ?';
var_dump ($translate->customStrtr ($str));
输出
string 'who will win a world cup ?' (length=26)
用法2
$translate = new TranslateCSV();
$translate->process ("PATH_TO_UPLOADED CSV");
if (! empty ($translate->getErrors())) {
print_r ($translate->getErrors());
} else {
echo "CSV Transalation Completed";
}
类
class TranslateCSV {
private $chars = array (
'`' => "'",
'Ë' => 'E',
'Â' => 'A',
'À' => 'A',
'Í' => 'I',
'Ì' => 'I',
'Ã' => 'A',
'Î' => 'I',
'Ä' => 'A',
'Ç' => 'C',
'Ò' => 'O',
'Ï' => 'I',
'È' => 'E',
'Ó' => 'O',
'É' => 'E',
'Ô' => 'O',
'Ê' => 'E',
'Õ' => 'O',
'Ö' => 'O',
'ê' => 'e',
'Ù' => 'U',
'ë' => 'e',
'Ú' => 'U',
'ë' => 'e',
'Ú' => 'U',
'î' => 'i',
'Û' => 'U',
'Û' => 'U',
'Ü' => 'U',
'ô' => 'o',
'Ý' => 'Y',
'õ' => 'o',
'â' => 'a',
'û' => 'u',
'ã' => 'a',
'à' => 'a',
'ÿ' => 'y',
'ç' => 'c',
'ï' => 'i'
);
private $output = array();
private $errors = array();
private $charsKeys = array();
private $charsValues = array();
function setChars($chars) {
$this->chars = $chars;
}
function getErrors() {
return $this->errors;
}
function customStrtr($str) {
if (empty ($this->charsKeys)) {
$this->charsKeys = array_keys ($this->chars);
}
if (empty ($this->charsValues)) {
$this->charsValues = array_values ($this->chars);
}
$str = str_replace ($this->charsKeys, $this->charsValues, $str);
$str = iconv ('UTF-8', 'ISO-8859-1//TRANSLIT//IGNORE', $str);
return $str;
}
function process($csvFile, $csvOut = "") {
if (! is_file ($csvFile)) {
$this->errors [] = "CSV files does not exist";
return false;
}
if (! empty ($csvOut) && ! @touch ($csvOut)) {
$this->errors [] = "Can't Create Output CSV";
return false;
}
$fpRead = @fopen ($csvFile, "r");
if (! empty ($csvOut)) {
$fpWrite = fopen ($csvOut, 'w');
}
while (($data = fgetcsv ($fpRead, 1000, ",")) !== FALSE) {
$num = count ($data);
$field = array();
for($c = 0; $c < $num; $C++) {
$field [] = $this->customStrtr ($data [$c]);
}
if (! empty ($csvOut)) {
fputcsv ($fpWrite, $field);
}
}
fclose ($fpRead);
if (! empty ($csvOut)) {
fclose ($fpWrite);
}
return true;
}
}
“,而上传“意味着您希望在传输过程中对其进行读取和替换? – 2012-04-14 08:00:40
我只是解析从我的csv文件上传的数据。然后作为参数传递给该函数。 – ram 2012-04-14 08:14:59
你可以添加你使用的代码来上传你的CSV ....我想我可以帮助 – Baba 2012-04-14 08:51:03