• 締切済み

10行単位の文字列をランダムに表示するには

10行単位になっている文字群をランダムに表示したいのですが。 たとえば、文字列や数字の列、スクリプトなどが、10行単位でdata.txtに入っています。 ランダムに、その文字列を10行単位で表示する方法です。 こんな形で、呼び出し行を入れてブラウザに表示したいです。 <?php require("data.txt"); ?> 具体例でいいますと、強大なサイトを数名で作っていて、それぞれのアカウントのアドワース広告をランダムに表示したいなどという場合です。 ひとかたまり10行の広告が7つあれば、70行です。 それをランダムに10行単位で呼び出せば可能かと思うのですが。 バナーやテキストのランダム広告はたくさんありますが、今回のようなものは探してもないので、教えていただけるとありがたいです。 もちろんもっといい方法があれば歓迎です。 よろしくお願いいたします。

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

みんなの回答

  • joy_28
  • ベストアンサー率84% (45/53)
回答No.2

40行までは、確認してますが、70行でも同じだと思います。 以下でいかがでしょうか? <?php $lineArray=array();//読み込んだ行を入れ込む、配列生成 $data=array(1,11,21,31,41,51,61);//開始行を指定し、 $num=rand(0,6);//0,1,2,3,4,5,6の乱数発生 $n=0;//行数のカウンター $file=fopen('pro.txt','r');//読み込み対象ファイル名を、pro.txtとする flock($file,LOCK_SH); while (!feof($file)){//行末まで、1行単位で、読み込む $line=fgets($file); $n++;//行数をカウント array_push($lineArray,$line);//配列$lineArrayに、push } for ($i=$data[$num];$i<=$data[$num]+9;$i++){//乱数で、開始行を、指定し、+9行分を、for文で廻す print '行番号'.$i.'の内容は、'.$lineArray[$i-1].'<br>'; } flock($file,LOCK_UN); fclose($file);

  • mizutaki
  • ベストアンサー率33% (111/333)
回答No.1

どのように保存されているかにもよりますけど、 ファイルの中に70行あるのでしたら、 file関数で取得 shuffle関数で並び順をランダムにする。 後は、適当に10個ずつ表示していけばいいと思います。

tokuk
質問者

補足

回答ありがとうございます。 10行の広告は、プログラムですので、順番が入れ替わってしまってはダメです。 1、11、21、・・・61行目から一つ選んで、そこから10行を抜き出してそのまま表示させたいのです。 説明が悪くて申し訳ありませんでした。

関連するQ&A

  • ランダムに文字を表示したい

    ランダムにテキストやリンクを表示するプログラムを書きたいのですが、何かいいサイトかいい方法はないでしょうか? ランダムに表示する文字列は違うTXTファイルなどに保存して別で管理する方法にしたいのですが。 CGI初心者なのですがよろしくおねがいします。

    • ベストアンサー
    • CGI
  • ランダム文字列

    srand; @array = a .. z; @new; while ( @array ) { push( @new, splice(@array , rand @array , 1) ); } print @new, "\n\n"; print "<br>"; print @new, "\n\n"; print "<br>"; print @new, "\n\n"; ↑のような感じでランダム文字列の作成を考えています。 上記スクリプトですと、 aewpodigtusnkjycfxvmzqrlhb aewpodigtusnkjycfxvmzqrlhb aewpodigtusnkjycfxvmzqrlhb ↑のようにどの行も同一文字列になってしまいます。これを、行毎に異なった8文字のランダム文字列にしたいのですが、方法がわかりません。 いっぺんに100行のランダム文字列を生成する必要があります。どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 行単位の文字列処理

    JAVA初心者です。 以下のようなファイル形式があります。 ファイル名(TEXT.TXT) //////////////////////////////////// Aa BFUNC1,abc,def Ab BFUNC2,ghi BFUNC3 /////////////////////////////////// ファイル行単位の先頭(1文字目)に処理の判定識別子が付きます。 A:2文字目の文字を既存の設定してある文字と置き換える。 B:,で区切り最初が関数名次からが引数になります。(例FUNC1(abc,def)) 上記をJAVAで記述したい場合どのようにしたらいいでしょうか? FileReader in = new FileReader("TEST.TXT"); BufferedReader br = new BufferedReader(in); String line; while ((line = br.readLine()) != null) { /*行単位の先頭一文字をチェック*/ switch(){  ←行単位の先頭一文字を判定するには記述するには?  CASE: "A": /*文字列置換*/ br.replace(str ,br); break; CASE:"B": /*方法(1)","で分解して連結する。最初はNextTokenで文字列を連結 させ、次に"("をつけ、次からNextTokenで","をつけていく。","がな くなったら")"をつけるようにするには? */   /*方法(2)","の最初は関数名なのでNextTokenで(1)と同様に"("をつけ    る。次からは行末尾までを一度に連結させ、最後に")"をつけるように   するには?*/ break; } }   ?の個所を教えてください。 ほかに簡単な記述などあればそちらも教えてください。

  • 登録した文字列をランダムに表示する。

    とても初歩的な質問だとは思いますが宜しくお願いします。 ただいまある実験用のプログラミングをBCB6で行っているのですが、 完全に行き詰ってしまいました。 作るものの概要としては 『ボタンを押す間隔を測り、測定した時間に応じて、 2つのカテゴリーからそれぞれ登録された文字列を表示させる。』 といったものです。 文字列を100個×2カテゴリー=合計200個登録する方法、 それをランダムで表示させる方法(1度使った文字列は使わない) をご教授いただきたいのです。 宜しくお願いします。

  • ランダムなアルファベットの文字列を覚える方法

    ランダムな数字の文字列を覚える方法だったら、 ネットで検索すれば、たくさん出てきますが、 ランダムなアルファベットの文字列を覚える方法は、 ネットで検索しても、出て来ない気がします。 ランダムなアルファベットの文字列を覚える方法は、 何か、ありませんか? そして、こういうことを、調べるには、 ネットで、どういうキーワードで、検索すれば、いいですか? 但し、英単語を覚えたいわけでは、ありません。 あくまでも、ランダムな文字列を、覚えたいのです。

  • 異なる単位付き文字列の集計

    表のある列に123mm、1.53m、100ft等のデータがランダムにコラムに入力されているとします。 ピボットテーブル等で各単位別に合計を表示させることは可能でしょうか?計10000mm、120290m、3280ftといったようにです。 単位を数値から切り離すというプロセスはしないという条件で考慮お願いいたします。

  • ランダム表示文字について

    if ( open( IN,"hoge.txt" ) ) {   @line = <IN>;   close( IN ); } else {   exit; } $random1 = @line[rand(@line)]; $random2 = @line[rand(@line)]; $randam3 = @line[rand(@line)]; テキストファイルから1行文字をランダムに表示するプログラムを書き実行できたのですが、このままだとrandom1,2,3の変数に同じものが入ってしまう可能性があります。 これで全て違うものが入るようなプログラムを書きたいのですが、そのようなことは可能でしょうか?

    • ベストアンサー
    • CGI
  • 外部JSから読み込んだ文字列をフォームに表示

    ボタンを押した後で、文字列を外部JSからランダムに読み込ませて表示させることはできますか? HPで使用するものではなく個人的にTRPG(NPCの決定など)に使おうと思っています… 1つのページに5つほどランダムテキストを置いたのですが、ソースを見ると数が多くなってしまい後から文章を付け加えるのに苦労してしまうので、外部JSファイルから読み込ませることにしました。しかし、 var txt = new Array(); txt[0]="あああ"; txt[1]="いいい" txt[2]="ううう"; mmax = 3; txtno = Math.floor(Math.random() * mmax); document.write(txt[txtno]); 普通にこれを読み込むとページを開いた時から文字列が表示されてしまいます。 ボタンクリックでフォームに表示させることはできないかな?と思いましたが、どうもどうすればいいか分かりません…

  • grepで検索文字列が完全一致した行だけ取り出す方法

    grepの文字列検索で検索文字列が単語として、完全一致した行だけ取り出す方法はないでしょうか? 通常は grep hoge hoge.txt と打つと、hogeが含まれる行が出力されますが、今回は含まれる行ではなくて完全に文字列が一致した行だけ取り出したいのです。 例えばhoge.txtの中に cc ghoge kkl hogem jjll hoge という3行があったとしたら最後の行でhogeという文字が空白で区切られた行だけ取り出したいのです。 何かよい方法があれば教えてください

  • データファイル中の文字列をランダムに取得する方法

    あるデータファイル中に以下のようなデータがあります。 >1234 adjaiubgubmcauouamaouagamouaucamougauyouajmouaguau zadaaboueroauahcaoqqpeuaoqueiiulgjaogahiapnnfaugao ・ ・ >1235 ajfaoufaobayanfaggsofudjjmlacxaoueytiaulmfglaguaou agaohghmfjghucpoepppppfagaaewetfhafhdaugyaiygyaygi ・ ・ >1236 ・ ・ 「>・・」はそれ以下の文字列のIDをあらわしています。各文字列はそれぞれIDを持っています。IDごとに30文字の文字列を(ランダムに)x回抽出するプログラムを教えてください。考えているうちにぜんぜんわからなくなりました。取得した文字列は元のデータファイル中に以下のように上書きをしたいです。「>」以下にはその文字列を取得したIDとそのID内のデータの何行目から何行目までのデータを取得したかを表す タグがほしいです。そのような仕様の文字列取得作業を全部でランダムにX回したいと考えております。以下の実行例のように取得する文字列は一部かぶってもぜんぜん結構です。 昨日から考えていますが、限界に来ました。 長い説明になって申し訳ございませんが、よろしくお願いします。 ≪元のデータファイルに上書きされた実行例≫ >1234from1to30 adjaiubgubmcauouamaouagamouauc >1236from51to81 aijewqmikfugpoirexcxgragukgewj >1235from47to77 guauzadaaboueroauahcaoqqpeuaoq ・ ・

    • ベストアンサー
    • Perl

専門家に質問してみよう