2009-08-23 29 views
1

我正在將舊的(大約2001年)PHP 3應用程序遷移到新的PHP5服務器。 90%的代碼在遷移後開箱即用,其餘大部分工作都是在我經歷了舊的php.ini並更改了新的php.ini中的設置以匹配時運行的。仍然有一件非常煩人的事情。該應用程序所做的主要事情之一是通過將來自MySQL數據庫的信息和嵌入在PHP腳本中的RTF模板混合在一起來創建RTF文檔。原作者使用echo語句將PHP變量引用和RTF混合在一起以向瀏覽器輸出文件,然後調用Word來處理輸出。從PHP回顯RTF時取代換行符而不是斜槓-f-s

我的問題是,在新系統中,只要echo語句有\ f,實際輸出就有一個換行符。我不確定它是CR還是LF,但它絕對是一個換行符。這是一個PHP的東西來處理\ f?我怎樣才能關閉它?

回答

1

根據PHP documentation雙引號字符串中的「\ f」代表版本5.2.5以來的FORM-FEED

因此,如果你想真正有"\f"在輸出中,你將需要使用"\\f",如:

echo "Test\\f"; 
+0

謝謝。我試圖尋找PHP文檔,但我想我沒有使用正確的搜索字符串。然而,必須有某種方法來關閉這種行爲,因爲在PHP 4.x服務器上運行的相同PHP代碼不會出現這種行爲。 – hofo 2009-08-23 21:19:57

+0

哦,我從文檔中看到這是PHP 5.2.5版本中引入的一種行爲。我想我會做大規模的搜索和替換,因爲RTF本身需要\ f。謝謝。 – hofo 2009-08-23 21:37:44

+0

沒問題。我錯過了文檔中的PHP版本。我更新了答案以包含該事實。快樂的編碼! – paracycle 2009-08-24 06:59:58

0

\ f是一種換頁形式。它相當於ASCII碼12.參見Wikipedia的全表。如果要打印RTF文檔,打印機應該轉到下一頁。如果您正在使用所見即所得編輯器(如Microsoft Word)查看文檔,則應顯示文檔跳到下一頁。

\ f不是專門針對PHP的東西。如果你實際上不需要表單提要,請刪除\ f's。

+0

RTF使用\ f表示別的東西。這不是「\ f」字符(就像\ n那樣),而是由RTF解析器讀取的兩個ASCII字符。我從RTF規範中可以看出,它與改變隨後文本中使用的字體有關。 – hofo 2009-08-23 21:31:02