0

タブ区切りのテキスト ファイルを書き込もうとしています。フィールドの 1 つは、HTML を含む製品説明であり、問​​題を引き起こしています (テストなしでテストしたところ、問題なく動作しました)。95 行目で構造が壊れています。95 行目のフィールドを確認しましたが、プレーン テキストです (改行やタブはありません)。

何かが原因でファイルが台無しになっています。トリム、strip_tags、utf8_encode を試し、複数のスペースを削除し、文字列を "/n" で配列に吐き出しました (その後内破します)。

私のコード:

///////////// Get product data from database and store as array /////////////

$products = array();
$c=0;

    $fprod = mysql_query("SELECT id,name,desc FROM products");
    while ($sprod = mysql_fetch_array($fprod)) {

    $products[$c]["id"] = trim($sprod["id"]);
    $products[$c]["name"] = trim($sprod["name"]);

    // strip product description field (the part that doesn't work)

        $prod_desc_a = utf8_encode(strip_tags($sprod["desc"]));    

        // convert any breaks or tabs to \n, explode by \n and then implode

        $prod_desc_b = str_replace(array("\r\n", "\r", "\t", " \t "), "\n", $prod_desc_a);
        $lines = explode("\n", $prod_desc_b);
        $new_lines = array(); 

        foreach ($lines as $i => $line) {
        if(!empty($line))
        $new_lines[] = trim($line);
        }

    $prod_desc_c = implode($new_lines);

// finally remove any multiple spaces and store in array

$prod_desc_final = preg_replace('/\s+/', ' ',$prod_desc_c);


$products[$c]["desc"] = $prod_desc_final;

$c++;
}


///////////// Write the file /////////////

$myFile = "feeds/froogle.txt";
$fh = fopen($myFile, 'w');

    $newline= " \n ";
    $tab= " \t ";

    foreach ($products as $product) {
    $this_line = $product[id] . $tab. $product[name] . $tab . $product[desc] . PHP_EOL; 
    fwrite($fh, $this_line);     
    $this_line = '';
    }

fclose($fh);

Excel または Google ドキュメントにインポートするとファイルが破損する理由はありますか? どうもありがとう。

4

0 に答える 0