2011-09-19 29 views
9

私は、PHPの関数fgets '関数を使用して、フラットファイルデータベースから画像名を呼び出し、ギャラリーを作るしようとしています。ギャラリーにはそれぞれ異なるセクションがあり、それぞれに独自のデフォルトイメージがあり、ユーザーが選択できるイメージの小さなリストがあります。 1つのボタンを除いてすべてが正常に機能しています。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のトリム()関数を使用することです。 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

これは、どうもありがとうございましたが、アレックスのソリューションが短くなるので、私はそれを使用行くつもりです動作します。 – Shreger

+0

アレックスのは、これはあなたが固定長レコードと末尾のスペースを持つファイルを処理する必要がある場合は、この答えは一つであり、そうIMO現在受け入れられている1意志の混乱スタッフまで... –

19

使用rtrim()を参照してください。具体的に

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

(。熱心なトリミング他の文字に、ちょうど改行を渡す)

+2

] =にも優れています。 @Alex Kennbergによって提供された関数は、現在の質問に対しては正しいものの、まさに修正されたばかりのバグの理由でした。 – Populus

+2

ある – Svish

+0

良い答え – Bizarro

関連する問題