- ベストアンサー
変数の中の改行を削除する方法
某CGIを改造中です。 $parts[0]~$parts[5]に文字列が入っています。 普段は改行入りなのですが、一部使用する場所だけは改行を抜きたいと思います。 可能でしょうか?また、その場合、どのようにしたらいいのでしょうか? 表示部分は「$parts[$part]」となっています。 初心者な為、何を伝えればいいかが良くわかっていません。必要な情報があれば書き込みします。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> $parts[0] = 'ジャンル1<BR>(ジャンル1の大まかな内容)'; > このように、途中に入るので、置換パターンが必要と言うことですよね。 改行というのは HTML の改行タグのことだったんですね^^; でしたら、 s/<BR>//ig for @tmp_parts = @parts; としてください。 # BR の大文字小文字を無視するため、置換オプションに i を付けています。
その他の回答 (2)
- leaz024
- ベストアンサー率75% (398/526)
改行抜きのデータが必要な場所が限られているなら、直接 @parts から改行を抜かず、一時的な変数にコピーして改行を抜きましょう。 また、「改行入り」というのが文字列末尾だけならば chomp で抜くことができますが、途中にも入っているとなると =~ s/\n//g などとする必要があります。 ・chomp パターン chomp(@tmp_parts = @parts); ・置換パターン s/\n//g for @tmp_parts = @parts; どちらも @tmp_parts に @parts をコピーし、@tmp_parts の方から改行を抜いています。 表示の際は、「$tmp_parts[$part]」としてください。
お礼
すみません。自己解決しました。 s/\n//g for @tmp_parts = @parts; ではなく、 s/<BR>//g for @tmp_parts = @parts; としたら良いだけでした。 ありがとうございました。
補足
返答ありがとうございます。 途中にあるのと後ろにあるのとでも差があるのですね。 補足すると、以下のようになっています。 $parts[0] = 'ジャンル1<BR>(ジャンル1の大まかな内容)'; $parts[1] = 'ジャンル2<BR>(ジャンル2の大まかな内容)'; ~~ このように、途中に入るので、置換パターンが必要と言うことですよね。 … やってみたのですが、表示はされるのですが、改行が消えてません。(T.T) 何が間違っているのでしょうか?
- fluffy
- ベストアンサー率29% (87/293)
chompを使うという意味ではなく?
お礼
質問を終了しようとしたら書き込みが… ちょっとの差でしたねw ># BR の大文字小文字を無視するため、置換オプションに i を付けています。 ほぅ。iでそのようになるのですね。 今回は前回の補足でもわかる通りコピペの連続なので、 使う必要はありませんが、今後の参考にさせていただきます。 ありがとうございます。