PHPスクリプトに関する質問です。

[[数値-数値]] の形式の文字列を、その数値間の間のランダムな整数に置き換えるスクリプトを教えてください。

例:[[20-999]] は 20以上999以下の範囲にあるランダムな1つの整数に置換される。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/05/02 17:22:30
  • 終了:2007/05/02 17:57:17

回答(2件)

id:riaf No.1

riaf回答回数13ベストアンサー獲得回数02007/05/02 17:38:16

ポイント28pt

$string = '[[20-999]]';

if(preg_match('/\[\[([0-9]+)\-([0-9]+)\]\]/', $string, $match)){

$rand = rand($match[1], $match[2]);// mt_rand()でも可

} else {

$rand = null;

}

echo $rand;

こんな感じですか?

http://php.net/mt_rand

id:bathrobe

ありがとうございます。

ですが、自分の質問が悪いことに気づきました。

ある文字列の中に、[[数値-数値]] の形式の文字列が含まれるとき・・・ を考えていました。

---

例:

あなたのさいころの目は[[1-6]]です。

あなたのさいころの目は3です。

---

のような置換を考えておりました。

もしよろしければ、再度ご回答ください。

2007/05/02 17:49:35
id:GEN111 No.2

GEN111回答回数472ベストアンサー獲得回数582007/05/02 17:44:32

ポイント42pt
$range = '[[20-999]]' ;
$randnum = (int)preg_replace('/\[\[(\d+)-(\d+)\]\]/e', "rand($1, $2)", $range) ;

 こんな感じでどうですか。

rand

id:bathrobe

おおっ、すばらしい。

こんなところに関数(rand)を置けるのですね!

$range には数字以外も入れたいので、int ははずしました。ありがとうございました。

2007/05/02 17:56:07
  • id:kurukuru-neko
    evaluate
    http://au.php.net/manual/ja/reference.pcre.pattern.modifiers.php
  • id:bathrobe
    おっと、補足説明ありがとうございます。

    $randnum = (int)preg_replace('/\[\[(\d+)-(\d+)\]\]/e' の e が重要なわけですね。

    感謝!

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません