Php在txt文件中写入奇怪字符
当我执行写在文件上的代码时,我对每个人说:Php在txt文件中写入奇怪字符,php,Php,当我执行写在文件上的代码时,我对每个人说: $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 = fop
$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);
$fileTXT='prodotti.txt';
$newfileTXT='prodotti_2'.date(“d-m-Y_h_m_s”).txt';
如果(!copy($fileTXT,$newfileTXT)){
echo“不可能的连续文件,不可能的重复文件TXT。”;
出口
}
$towriteinfle=“”;
$fp=fopen($path.$filename,“r”)或die(“无法打开$filename”);
$fpTXT=fopen($newfileTXT,'w')或die(“无法打开$newfileTXT”);
而(!feof($fp)){
$line=fgets($fp,1024);
$arr=分解(“\t”,$line);
$arr[7]=';';
echo“Prodotto:”.$arr[4]。“
”;
foreach($arr作为$fields){
fwrite($fpTXT,$fields.“;”);
}
fwrite($fpTXT,“\n”);
}
fclose($fpTXT);
fclose($fp);
我在txt文件上有这个结果:
175;13563;描述;01;类别等等。。。。。
梅尔卡托。㰻浩牳㵣栢瑴㩰⼯睷獯畣慬楴挮浯椯⽴慣⽴浩䡧杩⽨ ⸀ ⸀砀砀 漀欀ഀ樮杰•㸯㬻
图像的html代码是以中文字符编写的,为什么?是否要将内容从$filename添加到$newFileTXT的末尾 如果是,您应该更改:
$fpTXT = fopen($newfileTXT, 'w') or die("Couldn't open $newfileTXT");
到
该文件可能被解释为unicode(可能是UTF-8)。在unicode中,字符可以由多个字节组成。读取文件时,只需读取1024个字节,这可能会导致在所读取部分的末尾出现半个unicode字符,另一半出现在下一部分的开头。当您开始在两个字符之间添加新字符时,会出现其他unicode序列,导致文本完全混乱。我已经解决了问题,我已将任何一行传递给此函数:
function cleanString($string){
$string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);
return $string;
}
我的旧字符串包含二进制字符,我已经清理了字符串,现在一切正常
function cleanString($string){
$string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string);
return $string;
}