2012-01-16 46 views
1

我有一個PHP腳本,正在讀取(的file_get_contents)的文件。我想用br's替換所有換行符,並刪除所有其他字符。但是,將內容解釋爲JavaScript變量時出現錯誤。「意外的EOF」:如何刪除從PHP代碼的所有換行符?

我認爲有罪的一方是「^ Z」字,但我不知道如何擺脫它。 「^ M」是一個git字符,我相信「^ Z」實際上是字符串本身的一部分。

我怎麼會剝奪這個角色了在PHP?

enter image description here


好吧,我的問題是錯誤的之前,我已經有新的內容更新它。

如何確保所有換行符是從PHP字符串去除?這個字符串是用file_get_contents讀入的,然後用文件內容動態創建javascript。 「\ n」替換爲「NEW」,「\ r」替換爲「」。

不過,我得到一個「意外的EOF」的錯誤,當我複製字符串並將其粘貼到控制檯,東西是給我換行。我如何確保所有換行(對於這個問題的空白)被刪除?

trim() str_replace preg_replace

已全部使用,任何幫助是非常感謝!

SyntaxError: Unexpected EOF

+0

^Z通常是ctrl + z。它可以表示文件結束。 – NoviceProgrammer 2012-01-16 06:41:34

+0

我想你錯誤地解釋了錯誤信息;這是代碼中的錯誤,而不是數據中的錯誤,它是關於意外的程序結束,而不是關於文字^ Z字符。由於顯然你有多層解釋,並且你既沒有發佈代碼也沒有發佈消息的來源,我們必須猜測。我的猜測是你有一個PHP語法錯誤。過早的EOF警告來自代碼,如'if(1)then',至少你必須關閉塊來修復錯誤。 – tripleee 2012-01-16 07:30:38

+0

或者如果您正在評估本身包含未轉義的單引號(例如)的單引號字符串,那麼可能會導致「意外的EOF」,第一個未轉義的引號過早終止表達式。截圖看起來像'JSON.parse()'的第一個參數中有些奇怪的東西,是嗎? – tripleee 2012-01-16 07:43:27

回答

3

CTRL-Z是DOS/Windows的檔案結尾字符的文本文件。如果你檢查你的輸入文件,你可能會在那裏找到那個角色。

當文件是磁盤扇區大小的確切倍數時,它源於最早的日子(CP/M不低於),因此您不能擁有不是多個文件的文件。

所以,如果你想早點結束這個文件,你在那裏放置了一個特殊的文件結束符,這個文件讀取例程會理解。這對於二進制文件來說並不是問題,因爲最終它們是否有無關信息並不重要 - 它很可能會被忽略。但是,您不希望在您的小小的WordStar 3.3文檔末尾有任何垃圾。

^Z字符碼數26,所以你應該能夠使用str_replace\x1a的性格,一樣的東西:

$str = str_replace ("\x1a", "", $str); 
0

首先第一件事情,有沒有這樣的事,作爲一個git的字符。

^M是一個回車代碼,它可能來自與該文件一起工作的Windows機器。

^Z看起來可能是「替代品」字,你可以讀到這裏:http://en.wikipedia.org/wiki/Substitute_character,基本上它的意思是「我不知道如何來表示這個位置的字符」

也就是說,我看到paxdiablo在我之前發佈了,並且該代碼應該做到這一點。祝你的項目好運!

+0

我不是指git字符,因爲'git字符正在添加到我的文件中。'這只是差異,只要我說「git diff」就會出現修改。我沒有開始相信這可能是問題,但:) – andrewpthorp 2012-01-16 06:50:50

+0

好吧,你是什麼樣的操作系統?你們是否與其他人合作? – ctcherry 2012-01-16 06:53:58

+0

是的,這是在Windows中編譯。最終,php腳本生成一個HTML頁面並通過wkhtmltopdf運行它。我動態生成JavaScript,並且需要wkhtmltopdf來正確執行該JS(很奇怪,我知道,但是我現在堅持的設計決策) – andrewpthorp 2012-01-16 06:56:56

相關問題