2017-05-14 3 views
0

죄송합니다. 질문에 멍청한 소리가 들리면 죄송합니다. 내 문제는 텍스트 파일이 있고 데이터를 데이터베이스로 가져와야한다는 것입니다.PHP에서 지정된 구분 기호로 유니 코드 문자열을 분할하는 방법은 무엇입니까?

내가 정확히 print_r 라인이 맞을 때 읽기 프로세스가 정상입니다.

그런 다음 탭 (\ t) 구분 기호로 분할해야합니다. 그런 다음 모든 유니 코드 문자가 손상됩니다.

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset=utf-8> 
    <title>Test page for project XY</title> 
    </head> 
    <body> 
    <h1>Test Page</h1> 
    <pre> 
    <?php 
include 'ChromePhp.php'; 
ChromePhp::log('Start read file!'); 
ini_set("default_charset", 'utf-8'); 
$handle = fopen("input.txt", "r"); 
if ($handle) { 
    while (($line = fgets($handle)) !== false) { 
     // process the line read. 
     print_r($line); // if print the $line here, it's fine 
     $myArray = preg_split("/[\t]/", $line); //=> broken unicode, adding u not work 
     $myArray = explode("\t", $line);//=> same 
     print_r($myArray); 
    } 

    fclose($handle); 
} else { 
    // error opening the file. 
    // ChromePhp::log('Cant open file!'); 
    print_r ('Cant open file!'); 
} 
?> 


    </pre> 
    </body> 
</html> 

업데이트 : 여기

내가 시도하는 방법은 내가 제안으로 이것을 시도했지만 여전히 작동하지 :(

mb_internal_encoding("UTF-8"); 
mb_regex_encoding("UTF-8"); 
$tab="\t"; 
$myArray=(mb_split($tab,$line)); 
print_r($myArray);` 
+0

당신은 아마 unicode 수정 자만 있으면됩니다 :'preg_split ("/ [\ t]/u ", $ line)' – jeroen

+0

안녕하세요,'preg_split ("/ [\ t]/u", $ line)'을 시도했지만 여전히 characters 같은 문자가 나타납니다 : ( – Tiana987642

+0

PHP 소스 파일도 utf-8입니까? – RiggsFolly

답변

0

을 터미널에서 실행하려고 난 당신이보기에 오류가 있다고 생각 .pod에 header 명령을 넣고 codepage = UTF-8라고 말하고, PHP 파일 코드 페이지 자체를 확인해야합니다.

+0

주의 해 주셔서 감사합니다. input.txt가 UCS-2로 인코딩 된 것이 나쁘다는 것을 알게되었습니다 : p – Tiana987642