0

mysqlテーブルから.txtファイルにデータをエクスポートすることができました。ワードパッドで表示するときの問題は素晴らしいです。しかし、メモ帳やMicrosoft Wordでさえ、\ nがうまく機能していないように見えます。メモ帳では、同じ行にあるすべてのものが\nを尊重していませんでした。何を追加すればよいですか?以下は私たちのコードです。

<?php
require_once('config.php');     
// If the checkbox values are meant to all be integers, you might want to perform some validation/sanitisation/filtering here     
// Up to you to do that      // Collapse the IDs from the checkboxes into a comma-delimited string     
$link = mysql_connect(dbHost, dbUser, dbPassword);
if(!$link)
    {
            die('Failed to connect to server: ' . mysql_error());
    }

    //Select database
    $db = mysql_select_db(dbDatabase);
    if(!$db) 
    {
            die("Unable to select database");
    }     
// Template the SQL Query     
$sqlStr = 'SELECT stringData,dataInsertDateTime  FROM tblData  WHERE aID=1965';     
// Compile the SQL Query String     
//$sqlStr = sprintf( $sqlTpl , $export_ids );      
// Execute the SQL Query     
if( !( $sqlRes = mysql_query( $sqlStr ) ) )
{      
 // SQL Error - Log it, Handle it     
}
elseif( mysql_num_rows( $sqlRes )==0) 
{       // No Rows Returned - Log it, Handle it     
}
else
{       // We have results - process them       
$text = array();       
while( $r = mysql_fetch_assoc( $sqlRes ) )
{         // Looping through the returned rows, adding them to the $text array         
$text[] = $r['stringData']."  ".$r['dataInsertDateTime'];       
}       
// Collapse the $text array down into a normal string, with one element per line       
$output = implode( "\n" , $text );        
// Output Handling from @narcisradu's answer       
header("Pragma: public");       
header("Expires: 0");       
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");       
header("Cache-Control: private",false);       
header("Content-Transfer-Encoding: binary;\n");       
header("Content-Disposition: attachment;filename=\"filename.txt\";\n");       
header("Content-Type: application/force-download");       
header("Content-Type: application/octet-stream");       
header("Content-Type: application/download");       
header("Content-Description: File Transfer");       
header("Content-Length: ".strlen($output).";\n");       
echo $output;        die; // Prevent any further output     
} 
4

1 に答える 1

3

\r\nメモ帳は、 (キャリッジリターン+改行)であるDOS改行のみを読み取ります。を含めないと\r、すべてのテキストが1行に表示され、ブロック文字が正しく表示されない可能性があります。

私のアドバイスは、コードを変更するのではなく、さまざまな種類の改行を処理できる、より優れたテキストエディタを使用してそれらを読み取ることです。Windowsの場合、Notepad++をお勧めします。ソフトウェアの世界ではかなり多くのファイルが\nUnixスタイルの改行でエンコードされ、メモ帳はそれらを正しく読み取ることができません(大きなファイルを確実に開くことができないことに加えて、他の問題もあります)。エディターを切り替えるのが最適です。

于 2012-05-17T13:11:46.810 に答える