2011-09-19 79 views
9

我正在嘗試使用PHP'fgets'函數製作一個從平面文件數據庫調用圖像名稱的圖庫。圖庫中有不同的部分,每個部分都有自己的默認圖像以及用戶可以從中選擇的一小部分圖像。一切都很好,除了一個按鈕。如何從PHP中的fgets函數中消除換行符?

我在頁面上有一個按鈕,應該使用Javascript OnClick將所有畫廊重置爲其默認圖像。它的工作原理與我想要的完全一樣,只需一個小小的順序:它將行中的換行符與行中的字符一起復制,從而打破了Javascript。

違規代碼:

function back(){ 
document.getElementById('back').className='back'; 
document.getElementById('one').className='cellcont'; 

//This should output the proper javascript, but does not 
<?php 
$a = fopen('c.txt','r'); 
if (!$a) {echo 'ERROR: Unable to open file.'; exit;} 
$b = fgets($a); 
echo "document.getElementById('i1').src='$b';"; 
fclose($a); 
?> 

} 

它是如何輸出:

function back(){ 
document.getElementById('back').className='back'; 
document.getElementById('one').className='cellcont'; 
document.getElementById('i1').src='00.jpg 
';} 

正如你所看到的,結束引號和分號落在下一行,這打破了按鈕。我可以通過改變「fgets($ a)」到「fgets($ a,7)」來解決這個問題,但我需要讓它抓住整條線所以如果客戶決定輸入一個名字較長的文件,它不會破壞他們的畫廊。

+0

因爲它是一個字符串,你只是想刪除空格(換行符)字符的字符串。我想,這裏有很多答案。 –

回答

17

最好的辦法是使用php trim()函數。見http://php.net/manual/en/function.trim.php

$b = trim(fgets($a)); 
+0

謝謝,這個工程。 – Shreger

+0

@Shreger:點擊勾號。更多信息:[接受答案如何工作?](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – webbiedave

+1

@Webbiedave:對不起,我想過我有。 – Shreger

2
$b = fgets($a); 
$b = preg_replace("/[\n|\r]/",'',$b); 
+1

你不應該使用這個正則表達式。使用'str_replace()',它會快得多。但更好的是使用'rtrim()' – Ariel

+0

這很有效,非常感謝,但Alex的解決方案更短,所以我要去使用它。 – Shreger

+0

亞歷克斯的更好=] –

19

使用rtrim()

具體做法是:

rtrim($var, "\r\n"); 

(使用Avid修剪其他字符,通過在剛剛換行)

+2

這是國際海事組織更好的答案 – Populus

+2

是的,目前接受的會弄髒東西了... – Svish

+0

如果你必須處理固定長度的記錄和尾隨空格的文件,這個答案是。 @Alex Kennberg提供的功能,即使對於當前問題是正確的,也正是我剛修復的錯誤的原因。 – Bizarro

相關問題