2012-02-22 3 views
2

multipart/form-data 양식을 통해 업로드 된 utf-8로 인코딩 된 텍스트 파일을 구문 분석하려고합니다. 작은 .txt 파일을 만들었는데 여기에는 라틴어와 일본어 문자 (Jpz 소매 사이트에서 Jpz 문자를 복사/붙여 넣기)로 탭 구분 (의미가없는) 텍스트를 입력했습니다.mb_split 파싱 함수가 일본어 문자 UTF-8 텍스트와 함께 작동하지 않습니까?

나는이 시점에서 새로운 행을 (LINE) 및 탭으로 대체하려고합니다. (TAB).

다음
... 
$text=file_get_contents($_FILES['upload']['tmp_name']); 

$LineArray=array('\r\n','\n\r','\r','\n'); 
foreach ($LineArray as $value){ 
    $pieces=(mb_split($value,$text)); 
    $text=implode ("(LINE)",$pieces); 
} 
echo "Here is the modified text:<br/>"; 
echo $text; 
echo "<br/>"; 
var_dump($text); 

$tab='\t'; 
$pieces=(mb_split($tab,$text)); 
$text=implode ("(TAB)",$pieces); 
echo "Here is the modified text:<br/>"; 
echo $text; 
echo "<br/>"; 
var_dump($text); 
... 

이 변경 전에 텍스트의 vardump입니다 : 여기 내 코드입니다

string 'John Fitzgerald Kennedy 

Winston  Churchill 

John Edgar Hoover 

素材の 生地を柿渋で染 めた和柄パンツです 





火车票 火车票 火车票 火车票 



' (length=175) 

아시아 문자의 첫 번째 줄 2 개 탭이 파일의 마지막 행은 3 개의 탭이 있습니다.

string 'John(TAB)Fitzgerald(TAB)Kennedy(LINE)Winston(TAB)(TAB)Churchill(LINE)John(TAB)Edgar(TAB)Hoover(LINE)素材の 生地を柿渋で染(TAB)めた和柄パンツです(LINE)(LINE)(LINE)火车票 火车票 火车票 火车票(LINE)(LINE)' (length=235) 

어떻게 내 코드 만 일본어 텍스트 부분의 탭 중 하나를 식별 할 수 온 : 여기

는 모든 수정 후 텍스트의 vardump입니까?

답변

3

mb_split는 문자열을 처리하기 위해 인코딩을 결정하기 위해 mb_regex_encoding의 값을 사용합니다.이 값은 아마 UTF-8로 설정되어 있지 않고, 따라서 mb_split이/올바른 인코딩 작업을 기대하지 않습니다. mb_regex_encoding을 UTF-8로 설정하십시오.

+0

딩, 딩, 딩 ... 작동합니다. 고맙습니다. 나는 내가 UTF-8인지를 확인하기 위해해야만한다고 생각했다. 'mb_internal_encoding'과'mb_regex_encoding'에 대한 더 많은 정보를 얻을 필요가 있습니다. – JDelage