PHPスクリプトで、サーバーにUPしてあるテキストの中から、ランダムに文字を表示させるにはどのようなプログラムを具体的に書けばいけますか? 具体的には、例えば「動物.txt」の中にたぬききつねねことかかれていた場合、ランダムに「たぬき」や「きつね」、「ねこ」を表示させたいのです。また、そのテキストに文字を加えるだけで増やせるようにしたいと思っています。携帯サイトで使いたいと思っているスクリプトなので、PHPでと考えています。注)http://atom.hostmycgi5.com/index.php?sknnam=sample/randomt.shtmのようなつくりだと、項目を増やすとき、プログラムもかえないといけないので。 PHPを使えるプログラマーの方よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:shoma No.1

回答回数18ベストアンサー獲得回数0

ポイント10pt

URLは以下の関数のマニュアルです。

array_rand -- 配列から一つ以上の要素をランダムに取得する

<?php

//テキストファイル

$file = ”./animals.txt”;

$words = file($file);

print array_rand($word);

?>

id:sasada No.2

回答回数1482ベストアンサー獲得回数133

ポイント10pt

 PHPで、乱数を発生させるのには、

<?php

srand((double) microtime() * 1000000);

$janken[0] = ”グー”; $janken[1] = ”チョキ”; $janken[2] = ”パー”;

echo $janken[rand(0, 2)];

?>

などとします。

 この例では、srand((double) microtime() * 1000000)で初期化して、rand(0, 2)で0から2の乱数を得ています。

 今回の例では、動物.txtの要素の数で、乱数を作ることになります。

 動物の要素が配列 $dobutuに格納されているとすれば、その要素数はcount($dobutu)ですので、配列の添え字は 0からcount($dobutu) です。

 したがって、乱数はrand(0, count($dobutu))で求めればよいことになります。

 動物.txtから配列 $dobutuを作る方法は、動物.txtのフォーマットに依存しますので、ここでは説明しませんが、わかりますよね。

http://www.php.net/manual/ja/

PHP: PHP マニュアル - Manual

 おまけです。

 PHPのマニュアルです。ご参考までに。

id:accessmania No.3

回答回数62ベストアンサー獲得回数0

ポイント10pt

http://www.hatena.ne.jp/1065389330#

 PHPスクリプトで、サーバーにUPしてあるテキストの中から、ランダムに文字を表示させるにはどのようなプログラムを具体的に書けばいけますか? 具体的には、例えば「動.. - 人力検索はてな

URLはダミーです。

●動物.txtの中は下記の通り

たぬき

きつね

ねこ

●スクリプト

<?php

$arr = file(”動物.txt”);

mt_srand((double)microtime()*1000000);

print $arr[mt_rand(0,count($arr)-1)];

?>

で実現できると思います。

id:nikuzure No.4

回答回数89ベストアンサー獲得回数0

ポイント60pt

URLはダミーです。

私の環境では動きましたので試してください。

同じ階層にtext.txtを置くと、その中からランダムに

一行表示します。

一行単位で読み込んでいるので、文章の途中で改行は入れないでください。

以下をコピーしてください--------------------

<?php

//┏━━━━━━━━━━━━━┓

//┃テキストランダム表示簡易版┃

//┃ ┃

//┗━━━━━━━━━━━━━┛

//┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

//┃ヘッダ表示部

//┃・メタタグ内のcharsetは、文字コードに応じて変える

//┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

print <<<_HTML_

<html>

<head>

<meta http-equiv=”Content-Type” content=”text/html ; charset=EUC-JP”>

<title>ランダム表示</title>

</head>

_HTML_;

//┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

//┃メイン

//┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

$txt = fopen(”./text.txt”,’r’); //テキストファイルオープン(default:./text.txt)

while(!feof($txt)){

$line = fgets($txt,1000); //一行の読み込むバイト数(default:半角1000文字)

$line = trim($line);

if($line == ””){continue;} //空行無視処理

$data[] = $line;

}

$count = count($data) - 1;

$no = mt_rand(0,$count);

$out_txt = $data[$no];

print ”$out_txt”; //出力部

//┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

//┃フッダ表示部

//┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

print <<<_HTML_

</body>

</html>

_HTML_;

?>

ここまで---------------------------

id:hiro_tt55

すごく丁寧に教えていただいて、またそちらの環境でも試していただいてありがとうございました!

2003/10/06 13:09:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません