2009-08-23 10 views
1

古い(2001年頃の)PHP 3アプリケーションを新しいPHP5サーバに移行しています。移行後はすぐにコードの90%が使用でき、古いphp.iniを見て、新しいphp.iniの設定を変更すると残りのビットのほとんどが機能しました。それでも本当に迷惑なものが1つあります。アプリケーションが主なものの1つは、PHPデータベースに埋め込まれたRTFテンプレートやMySQLデータベースからの情報をまとめてRTFドキュメントを作成することです。元の著者はPHP変数参照とRTFが混在したecho文を使用してブラウザにファイルを出力し、Wordを呼び出して出力を処理しました。PHPからRTFをエコーするときにスラッシュ-f-sの代わりに改行を得る

私の問題は、新しいシステムでは、echo文が\ fを持つたびに、実際の出力に改行があることです。私はそれがCRかLFかどうか確信していませんが、間違いなく改行です。これは\ fを処理するPHPのものですか?どのように私はそれをオフにすることができますか?

答えて

1

PHP documentationによれば、二重引用符で囲まれた文字列の "\ f"は、バージョン5.2.5からFORM-FEEDを表します。あなたが実際にあなたの出力に"\f"を持つようにしたい場合は

したがって、あなたはのように、"\\f"を使用する必要があります:

echo "Test\\f"; 
+0

ありがとうございます。私はPHPのドキュメントを調べてみましたが、正しい検索文字列を使用しなかったと思います。しかし、PHP 4.xサーバ上で動作する同じPHPコードはこの動作を示さないため、この動作を無効にする方法がいくつかあります。 – hofo

+0

ああ、ドキュメントから見ると、これはバージョン5.2.5で導入された動作です。 RTF自体には\ fが必要なので、私は大量の検索と置換を行うと思います。ありがとう。 – hofo

+0

問題ありません。私はこの文書でPHPバージョンを見逃していました。その事実も含めて回答を更新しました。ハッピーコーディング! – paracycle

0

\ fはフォームフィードです。これはASCIIコード12に相当します。Wikipediaの表全体を参照してください。 RTFドキュメントを印刷する場合、プリンタは次のページに移動する必要があります。 Microsoft WordなどのWYSIWYGエディタでドキュメントを表示している場合は、ドキュメントが次のページにスキップされることが示されます。

\ fはPHPのものではありません。あなたが実際にフォームフィードを望んでいなければ、\ fを取り除く。

+0

RTFは、何か他のもののために\ Fを使用しています。これは\ nのような "\ f"文字ではなく、RTFパーサーが読み取った2つのASCII文字です。私はRTF仕様から、それに続くテキストに使用されているフォントを変更することとは何かが関係しています。 – hofo

関連する問題