2014-01-06 58 views
0

我有產生用openssl底座64 .txt文件,假設該文件的內容是:如何避免file_get_content/fgets/fread分隔我的字符串?

HIK + W9hsOweQdOYx0ngYn + O54lXiDjZvDdzjtBwTI/uhPKF5egIIXnau3535G3wOyZnsI6F3YgokDfc9m6O3UM7MBMqgG5TEqtPdCzSbFq9VUPdJSmznNVQCI207OMku9NNLgehkh/jK2eITpPuh97EQuCW/aJjl0quM07bhWiI =

所有在同一行,但即使是當我從記事本複製並粘貼在這裏,它粘貼像3線:

海康+ W9hsOweQdOYx0ngYn + O54lXiDjZvDdzjtBwTI/uhPKF5egIIXnau3535G3wO yZnsI6F3YgokDfc9m6O3UM7MBMqgG5TEqtPdCzSbFq9VUPdJSmznNVQCI207OMku 9NNLgehkh/jK2eIT pPuh97EQuCW/aJjl0quM07bhWiI =

我一直在試圖通過separing它欺騙的字符串,但不管我嘗試它只是不工作,我已經試了下:

$handle = fopen($file, "r"); 
$str = ""; 
while($line = fgets($handle)){ 
    echo $line; <--here i get 3 strings separated by a space characters 
    $str = $str.$line; 
fclose($handle); 
echo $str; <--- same 3 strings separated by a space 
die; 

然後嘗試:

$handle = fopen($file, "r"); 
    $str2 = ""; 
$str = fread($handle, filesize($file)); <-same result 
fclose($handle); 
echo substr($str,0,64); 
echo substr($str,64,64); 
echo substr($str,128); <-same result 
    $str2 = substr($str,0,64).substr($str,64,64).substr($str,128); <-same result 

實際上我第一次嘗試這一塊,因爲這被認爲是獲得文件內容的最簡單的方法:

$str = file_get_contents($file); 
$str = str_replace(' ', '', $str); 
echo $str; <- same result 

試圖用''代替'',並且它不工作,導致我相信即使在.txt文件中只有一個單獨的字符串,base64編碼也會使這些字符串變得特別,最糟糕的是,PHP知道它不能忽略它,但我需要它是1個單一的字符串,任何人都知道發生了什麼,並介意解釋它?我怎樣才能完成獲得1字符串沒有每64個字符的空格?這真讓我抓狂。

+0

因此您正在生成的.txt文件會創建3個獨立的字符串,但是您想要合併他們變成1?你介意分享你用來生成字符串的openssl命令嗎? – KorreyD

+0

不,.txt只有一個字符串,但是當我得到文件的內容時,它會得到3個字符串,即使我直接從記事本複製並粘貼它在這裏它是3字符串,但在記事本中它顯示1字符串,沒有空格,沒有新行,這是命令:openssl base64 -in $ bin -out $ file – Lauro182

回答

1

http://wiki.openssl.org/index.php/Command_Line_Utilities以base64部分:

「的警告的base64線路長度被限制爲76個字符中默認 OpenSSL的(和與64個字符/線生成)...以能夠 解碼而無需換行超過76個字符顯示的base64線使用 -A選項:」

這意味着你的命令:

的OpenSSL的base64 -in $斌退房手續$文件

起來將自動中斷您的輸出爲64個字符行

,如果你想輸出是在一個行中使用-A選項:

的OpenSSL的base64 -A -in $斌退房手續$文件

這將使喲你輸出所有1大字符串

閱讀到你的PHP腳本與file_get_contents()應該讓你想要的結果。

此Wiki網頁確實說這約雖然-A選項:

「...... -A選項BUGGY(限長文件)。」

儘管它沒有出現指定「長文件」的長度。


如果你想和你原來的OpenSSL命令堅持:

的OpenSSL的base64 -in $斌退房手續$文件

那就試試這個,使這一切一個字符串:

$str = file_get_contents($file); 
$str = str_replace("\n", "", $str); 
echo $str; 
+0

非常感謝解釋,我知道有一些東西,但我不知道如何尋找它。我更喜歡避開越野車的部分,所以我去替換字符串並像魅力一樣工作,謝謝! – Lauro182