시험해보세요.
내가 사용한 예는 테스트 환경에서 수행 한 작업 이었지만 코드를 약간 변경해야 할 수도 있습니다.
function neatify_files(&$files) {
$tmp = array();
for ($i = 0; $i < count($_FILES); $i++) {
for ($j = 0; $j < count($_FILES[array_keys($_FILES)[$i]]["name"]); $j++) {
$tmp[array_keys($_FILES)[$i]][$j]["name"] = $_FILES[array_keys($_FILES)[$i]]["name"][$j];
$tmp[array_keys($_FILES)[$i]][$j]["type"] = $_FILES[array_keys($_FILES)[$i]]["type"][$j];
$tmp[array_keys($_FILES)[$i]][$j]["tmp_name"] = $_FILES[array_keys($_FILES)[$i]]["tmp_name"][$j];
$tmp[array_keys($_FILES)[$i]][$j]["error"] = $_FILES[array_keys($_FILES)[$i]]["error"][$j];
$tmp[array_keys($_FILES)[$i]][$j]["size"] = $_FILES[array_keys($_FILES)[$i]]["size"][$j];
}
}
return $files = $tmp;
}
if (isset($_POST["submit"])) {
neatify_files($_FILES);
$file = $_FILES["file"][0];
$handle = fopen($file["tmp_name"], "r");
while ($line = fgets($handle)) {
$enc = mb_detect_encoding($line, "UTF-8", true);
if (strtolower($enc) != "utf-8") {
echo "<p>" . (iconv($enc, "UTF-8", $line)) . "</p>";
} else {
echo "<p>$line</p>";
}
}
}
?>
<form action="<?= $_SERVER["PHP_SELF"]; ?>" method="POST" enctype="multipart/form-data">
<input type="file" name="file[]" />
<input type="submit" name="submit" value="Submit" />
</form>
이 기능 neatify_files
은 다음과 같습니다
test
café
áÁÁÁááá
žžœš¥±
ÆÆÖÖÖasØØ
ß
가 그럼 난에 파일 입력했다 다음 코드를 수행 양식을했다 :
난에서 다음 데이터를 텍스트 파일을했다 레이아웃에서 논리적 인 배열을 만들기 위해 쓴 글입니다.
이 양식은 서버에 데이터를 POST
로 보내는 표준 양식입니다.
참고 : $_SERVER["PHP_SELF"]
을 사용하면 보안 위험, see here for more이 발생합니다.
데이터가 게시되면 파일을 변수에 저장합니다. 분명히 multiple
속성을 사용하면 코드가 이와 같이 보이지 않게됩니다.
$handle
은 텍스트 파일의 전체 내용을 읽기 전용 형식으로 저장합니다. 따라서 "r"
인수
$enc
은 mb_detect_encoding
기능을 사용하여 인코딩 (duh)을 감지합니다.
처음 엔 올바른 인코딩을 얻는 데 어려움을 겪고있었습니다. encoding_list
을 UTF-8 만 사용하고 strict
을 true로 설정하십시오.
인코딩이 UTF-8이면 iconv
기능을 사용하여 UTF-8로 변환하지 않으면 간단하게 줄을 인쇄합니다.
어떤 샘플 파일을 사용해 볼 수 있습니까? –
답변을 찾으실 수 있습니다 : https://stackoverflow.com/a/7980354/1348344 –
그래서 가장 좋은 해결책은 utf-8이 포함되어 있는지 검색하는 것입니다. –