• ベストアンサー

指定行を取得する方法を教えて下さい。

変数 $a = "a\nb\nc\nd\ne\nf\ng\n"; としています。 echo $a; の結果をブラウザで表示させてソースを見ると、下記のように意図した通り表示されます。 a b c d e f g この変数 $a の中から3行目("C")だけを取り出したい場合のようにすればよいのでしょうか? よろしくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • altrn
  • ベストアンサー率62% (10/16)
回答No.1

$array=explode("\n",$a); とすると、$arrayに$aを\nで分割した配列が入ります。 http://jp2.php.net/manual/ja/function.explode.php そのあと、 echo $array[2]; とすれば"c"が表示されるかと思います。

tessyu
質問者

お礼

ありがとうございます、無事に解決致しました!!!

関連するQ&A

  • Perlで行をさかのぼって削除する方法を教えて下さい

    ActivePerl5.8.4にて、以下の規則に従い、テキストファイルから複数行を削除しようとしています。 ・1つの行はアルファベットと数字から成っており、アルファベットはA,B,Cの順に出現する。A,B,Cの行で一かたまり。 ・数字部分が全く同じかたまりが出現すると、後で出現したかたまりを削除する。 ・数字部分が全く同じかたまりが出現するときは、必ず連続で出現する。 下のような感じです。(スペースの都合で「\n」をつけましたが、実際には改行までが1行に書かれているテキストファイルを読み込みます。) 【入力】 A 1\nB 2\nC 3\nA 1\nB 2\nC 3\nA 1\nB 2\nC 2[EOF] 【出力】 A 1\nB 2\nC 3\nA 1\nB 2\nC 2[EOF] すぐに思いついた方法はこんな感じです(まだ勉強不足のため、コードではあらわせません)。  1.ファイルの1行ずつ読み込む  2.A,B,Cをキーにして数字をハッシュに格納  3.2回目のCまで読み込んだところで1つ前のハッシュと比較  4.AからCの数字がすべて同じだった場合に、現在の行(2つめのCを読み込んでいる)とその前2行を削除(実際にはnextでprintを飛ばす) ところが、4の、さかのぼって行を削除する方法が思いつきません。 なにぶんperlの勉強を始めたばかりで突っ込み所満載のロジックだとは思いますが、解決策をぜひご教示ください。

    • ベストアンサー
    • Perl
  • 秀丸マクロ インプット関数使用時のメッセージボックスサイズについて

    秀丸Ver4.17を使用してマクロを作成しています。 $a=input("a\nb\nc\nd\ne\n"); とした時に、最初のa、b、cは表示されるのですが、d、e、fは、メッセージボックスの縦の長さが短く隠れてしまいます。 どなたか解決方法をご存知ないでしょうか? 最新の秀丸にVerアップすれば、解決できるでしょうか? #過去に作ったマクロが多くあり、Verアップで正常に動かなくなるのでは?と思い、Verアップはためらっています。

  • 棋譜の読み方で「:」は何の意味?

    いつかは「ド素人」から「ド」をとりたいと思っている者です。 1 c4 e5 2 Nc3 Nf6 3 Nf3 Nc6 4 d4 ed 5 N:d4 Bb4 6 Bg5 h6 7 Bh4 B:c3+ 8 bc Ne5 9 f4 Ng6 10 B:f6 Q:f6 11 g3 上の棋譜で、時々出てくる「:」はどういう意味ですか。教えてください。

  • EXCEL 行の指定について

    行の数値を代入する方法を教えてください。 例えば, =SUM(F20:F38) を求めるために20、38を変数としたいのですが、  |A  |B  |C  |D 1|20  |38  |   | 2|   |   |   | 3|   |   |   | そこで、行の値を他のセルから 参照したい。 つまり、 =SUM(F〔A1〕:F〔B1〕) ←※わかりやすいように書きました。       ↓   ↓       20   38 このように行の値を別のセルから 参照して代入する方法はあるのでしょうか?? 宜しくお願いします。 ・・・わかりやすく説明できたかな?? 理解しづらかったら、すいません。

  • チェス超初心者です。どこが悪かったのでしょうか?

    どのようにお願いすればさえもわからないのですが、自分のどこが悪かったのか教えてもらえますでしょうか。 対戦で使用したサイトはここです。レベル1で負けました。(恥) http://chess.plala.jp/chess_beta.html 先行は僕(白)です。 以下が棋譜になります。 1. e4 e5 2. d3 f6 3. Nc3 c5 4. Nd5 h6 5. Be2 c4 6. Nf3 b6 7. O-O Bb7 8. Nh4 Ne7 9. Bh5+ g6 10. Nxg6 d6 11. Nxh8+ Ng6 12. Bxg6+ Kd7 13. Qg4+ Kc6 14. b4 Ba6 15. b5+ Bxb5 16. Rb1 Nd7 17. Rxb5 Nb8 18. Ra5 bxa5 19. Qe6 cxd3 20. Rd1 d2 21. Rxd2 Bg7 22. Rd4 Kb5 23. Rc4 Nc6 24. Rxc6 Kxc6 25. Qxd6+ Qxd6 26. f4 Bxh8 27. fxe5 Qf8 28. exf6 Kb7 29. e5 Kc8 30. e6 Kb8 31. Bf4+ Kb7 32. e7 Qc8 33. e8=Q Qxe8 34. Nc7 Qe1#

  • DOSバッチにて外のファイルの指定行を読む

    今回、皆様の助けを頂き、DOSバッチを作成して仕事をやることができました。 感謝します。しかしながら、入出力に関して、もう少し理解したいと思います。 特に、外のファイルの指定行の内容を読み出すことはできないでしょうか? 外のファイルの最初の行を読み出す @echo off set /p abc=< c:\mylog.log echo %abc% 外のファイルの最後の行を読み出す @echo off FOR /F "delims= " %%a IN (c:\mylog.log) DO (set abc=%%a) echo %abc% ----------- DOSのHelpを調べてみましたが、 For のパラメータについて、よく理解できていません。 パラメータをうまく使えば、ファイルの指定行を読み出せる気がするのですが、 調べ切れていません。 宜しくお願いします。

  • foreach 文での行指定方法

    はじめましてこんばんはm(_ _)m いろいろ検索してみましたが解決出来ませんでしたので何卒ご教授願います。 あるフリーのcgiを利用させてもらっているのですが一部改造したいと思っております。 cgiはフォームメール用で以下のプログラムによってhtml側のデータを読み取ってくれます。この時にhtml側のデータを全て読み取ってくれるのですが一部のみを抜粋して上から順に表示させたいと思います。 例えばhtml側が以下の3項目でこの順番だとして()内はNAMEです。 【html側】 質問=NAME属性(A) 名前=NAME属性(B) 電話=NAME属性(C) これをメールで受け取った時に以下のメール文のようにNAME属性(B)が先頭に来るようにしたいのです。 【メール文】 (B)= 山田太郎 (C)=0123456789 (A)=好きな食べ物はイチゴ (B)の行が上から何番目という様に指定する方法では出来るのですが複数ファイルがあり(B)の行番号が変動する為指定出来ません。 【html側】が以下のようになっているとして以下のプログラムはどのように指定すればよろしいですか?当方初心者の為質問内容が分かりにくいかと存じますが何卒よろしくお願いいたします。 質問=NAME属性(A) 名前=NAME属性(B) 電話=NAME属性(C) foreach (0..$count-1) { if ($DATA_V[$_] =~ /\n/) { &jis("$DATA_N[$_] =\n\n$DATA_V[$_]\n"); print OUT "$msg\n"; } else { &jis("$DATA_N[$_] =$DATA_V[$_]"); print OUT "$msg\n"; } }

    • 締切済み
    • CGI
  • C#で空白行を削除する方法

    C#でテキストを読み込んで、文字列型の変数に代入、そしてtextBoxに表示させます。その中にいくつかの空白だけの行があります。その空白行だけを削除する方法がわかりません。わかる方がいらっしゃいましたらよろしくお願いします。 FileStream file = File.Open(@"C:\text.txt",FileMode.Open); Encoding enc = Encoding.GetEncoding("Shift_JIS"); StreamReader reader = new StreamReader(file,enc); string A = reader.ReadToEnd(); A = Regex.Replace(A,"\r\n",""); textBox1.Text = A; とすると全ての改行が削除されてしまいます。 正規表現をうまくつかうと出来るような気がするんですが・・・

  • c言語の配列の先頭アドレスが偶数アドレスとなる理由について

    c言語の配列の先頭アドレスが偶数アドレスとなる理由について 下記のように実行結果をで見ると、配列Sの先頭アドレスと配列Cの先頭アドレス共に偶数アドレスなる理由を教えて頂きたい。 /*list0105*/ #include <stdio.h> main() { char na=1; char nb=1; char c[2] ={1,2}; char s[3] = {1,2,3}; char nc=1; char nd=1; printf("%p\n",&na); printf("%p\n",&nb); printf("%p %p \n", &c[0],&c[1] ); printf("%p %p %p \n", &s[0],&s[1] ,&s[2] ); printf("%p\n",&nc); printf("%p\n",&nd); } 実行結果 0xbffff8cf 0xbffff8ce 0xbffff8cc 0xbffff8cd ← c配列 0xbffff8b0 0xbffff8b1 0xbffff8b2 ← S配列 0xbffff8af 0xbffff8ae

  • 行を指定して削除する方法PERL

    ある文字を検索して、その行を含む&1行前と2行後ろの行までを削除するスクリプトを書きたいのですが、上手くいきません。 検索して行番号を獲得して、 $rowという変数に入れました。 それをさらに $a :1行前 $b :2行後ろの行番号に格納しました。 問題は削除するところが上手く行きません。 next if で $aから$bの行番号を削除して、と頼んでいるのですが、空のファイルに上書きされてしまいます。 お願いです。この方法で何が間違っているかを教えてください! #!/opt/perl/5.8.0/bin/perl -w print "Content-type: text/html\n\n"; use CGI qw(:standard); use CGI::Carp qw/fatalsToBrowser/; $filename = "../XML/link.xml"; $new = "../XML/link.xsl"; open(FILE, $filename) or die "Can't open `$filename': $!"; while (<FILE>) { if($_ =~ /HRWeb/){ #print "$."; $row = $.; $a = $row-1; $b = $row+2; print "HRWeb delete rows $a through "; } } &delete ($a, $b); sub delete{ open( OLD, "< $filename" ); open( NEW, "> $new" ); while ( <OLD> ) { next if /$a/../$b/; # copy everything but $a through $b print NEW $_; }print "$a deleted $b"; close( OLD ); close( NEW ); rename( $filename, "$filename.orig" ); rename($new, $filename ); }

    • ベストアンサー
    • Perl