2014-05-04 3 views
0

Я всем, когда я выполнить Тхи код для записи на файл: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 = 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); 

У меня есть Тхи результат на текстовый файл:

175; 13563; desc; 01; category; ............... c и т. д. ..... меркато. 㰻 浩 牳 㵣 栢 瑴 㩰 ⼯ 睷 ⹷ 畣 畣 慬 楴 挮 浯 椯 椯慣 ⽴ 浩 䡧 杩 ⽨ ㄀ ⸀ ㄀ ⸀ 砀 砀 漀 㬻 㬻 㬻 㬻

html-код для изображения написан как китайский caharcter, почему?

ответ

0

Вы хотите добавить контент в конец $ newFileTXT из $ filename?

Если да, то вы должны изменить:

$fpTXT = fopen($newfileTXT, 'w') or die("Couldn't open $newfileTXT"); 

в

$fpTXT = fopen($newfileTXT, 'a') or die("Couldn't open $newfileTXT"); 
0

Файл, вероятно, интерпретируется как Юникод (вероятно, UTF-8). В юникоде символы могут состоять из нескольких байтов. Когда вы читаете файл, вы просто читаете 1024 байта, что может привести к получению символа юникода в конце прочитанной части, а другая половина - в начале следующей части. Когда вы начинаете добавлять новые символы между ними, вместо этого вы получаете другие последовательности юникода, в результате чего текст становится полным беспорядком.

+0

Как решить Тхи проблема? –

0

Я решил проблему, я прошел все строки в этой функции:

function cleanString($string){ 
    $string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string); 

    return $string; 
} 

Моя старая строка содержала двоичных символов, я очистил строку и теперь все нормально

Смежные вопросы