我对每个人,当我执行代码写入文件时:
$fileTXT = 'prodotti.txt';
$newfileTXT = 'prodotti_2'.date("d-m-Y_h_m_s").'.txt';
if (!copy($fileTXT, $newfileTXT)) {
echo "Impossibile continuare, impossibile creare file TXT.";
exit;
}
$towriteinfile = "";
$fp = fopen($path . $filename, "r") or die("Couldn't open $filename");
$fpTXT = fopen($newfileTXT, 'w') or die("Couldn't open $newfileTXT");
while (!feof($fp)) {
$line = fgets($fp, 1024);
$arr = explode("\t", $line);
$arr[7] = '<img src="http://link/imgHigh/' . $arr[7] . '.jpg" />;';
echo "Prodotto: ".$arr[4]."<br>";
foreach ($arr as $fields) {
fwrite($fpTXT, $fields.";");
}
fwrite($fpTXT, "\n");
}
fclose($fpTXT);
fclose($fp);
我在txt文件上有结果:
175; 13563; desc; 01;类别; ..............等等..... mercato。㰻浩牳㵣柏瑴㩰睷⽴獯慬楴挮⽴⽴⽴⽴⽴䡧䡧樮樮樮樮樮樮樮•杰㸯㬻㬻㬻
图像的html代码写成中文caharcter,为什么?
答案 0 :(得分:0)
是否要在$ filename?
的$ newFileTXT末尾添加内容?如果是这样,你应该改变:
$fpTXT = fopen($newfileTXT, 'w') or die("Couldn't open $newfileTXT");
到
$fpTXT = fopen($newfileTXT, 'a') or die("Couldn't open $newfileTXT");
答案 1 :(得分:0)
该文件可能被解释为unicode(可能是UTF-8)。在unicode中,字符可以包含多个字节。当您读取文件时,您只读取1024个字节,这可能会导致您读取的部分末尾有一半的unicode字符,另一半则位于下一部分的开头。当你开始在中间添加新字符时,你会得到其他的unicode序列,导致文本完全混乱。
答案 2 :(得分:0)
我已经解决了这个问题,我已将任何一行传递给此函数:
function cleanString($string){
$string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);
return $string;
}
我的旧字符串包含二进制字符,我已经清理了字符串,现在一切正常