我正在尝试解析通过 multipart/form-data
表单上传的 utf-8 编码文本文件。我构建了一个小的 .txt
文件,在其中输入了一些用拉丁语和日语字符分隔的(无意义)文本(我从 Jpz 零售网站复制/粘贴了 Jpz 字符)。
此时我所尝试的就是用 (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 个制表符。
这是所有修改后文本的 vardump:
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)
为什么我的代码只能识别日语文本部分中的一个选项卡?
最佳答案
mb_split
使用 mb_regex_encoding
的值确定用什么编码来处理字符串。该值可能未设置为 UTF-8
,因此 mb_split
不期望/使用正确的编码。尝试将 mb_regex_encoding
设置为 UTF-8。
关于php - mb_split 解析函数无法处理日语字符 UTF-8 文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9404682/