さて、前回とその前で、「ランダムな言葉をPOST」と、「時報をPOST」の方法を会得しました。
次はその2つを組み合わせてみます。
つまり「時報を含むランダムな言葉をPOST。」
2件のソースを見た目上ほぼ同じ使い方をすると、こうなります。
<?php
$url = "http://twitter.com/statuses/update.xml?";
$username = "rishitest";
$password = "password(ダミー)";
$mes[0] = "おはよう。もうG時ですよ。";
$mes[1] = "こんにちは。今はG時です。";
$mes[2] = "G時になった。いただきます。";
$mes[3] = "こんばんは。G時をまわってます。";
$mes[4] = "G時なので、もうおやすみなさい。";
$message = date($mes[rand(0, 4)]);
$params = "status=". rawurlencode($message);
$result = file_get_contents($url.$params , false, stream_context_create(array(
"http" => array( "method" => "POST", "header" => "Authorization: Basic ".base64_encode($username. ":". $password)
)
)));
?>
|
「$mes[0~4]」に文字列を入れるのはOKかと思われます。
で、このあとなんですが、そのまま「$message」に入れるのではなく、dete関数を使って返却された文字列を入れます。
こうすることによって、文字列のGの部分には時刻が入るというわけです。
http://twitter.com/rishitest/status/1773178421
さてここでひとつ補足ですが、date関数を使うと、date関数で置き換えられる文字はすべて日付や時間に置き換えられてしまいます。
例えば、以下のプログラム。
<?php
$url = "http://twitter.com/statuses/update.xml?";
$username = "rishitest";
$password = "password(ダミー)";
$mes[0] = "おはよう。もうG時ですよ。MySweetHoney。";
$mes[1] = "こんにちは。今はG時です。MySweetHoney。";
$mes[2] = "G時になった。いただきます。MySweetHoney。";
$mes[3] = "こんばんは。G時をまわってます。MySweetHoney。";
$mes[4] = "G時なので、もうおやすみなさい。MySweetHoney。";
$message = date($mes[rand(0, 4)]);
$params = "status=". rawurlencode($message);
$result = file_get_contents($url.$params , false, stream_context_create(array(
"http" => array( "method" => "POST", "header" => "Authorization: Basic ".base64_encode($username. ":". $password)
)
)));
?>
|
いちいち、MySweetHoneyって言わないと気がすまないとします。
しかしこれを実行すると、
http://twitter.com/rishitest/status/1773334100
文字が置き換えられまくって、悲惨な結果に…。
そうならないようにしたのが下のソースです。
<?php
$url = "http://twitter.com/statuses/update.xml?";
$username = "rishitest";
$password = "password(ダミー)";
$hour = date("G");
$mes[0] = "おはよう。もう".$hour."時ですよ。MySweetHoney。";
$mes[1] = "こんにちは。今は".$hour."時です。MySweetHoney。";
$mes[2] = $hour."時になった。いただきます。MySweetHoney。";
$mes[3] = "こんばんは。".$hour."時をまわってます。MySweetHoney。";
$mes[4] = $hour."時なので、もうおやすみなさい。MySweetHoney。";
$message = $mes[rand(0, 4)];
$params = "status=". rawurlencode($message);
$result = file_get_contents($url.$params , false, stream_context_create(array(
"http" => array( "method" => "POST", "header" => "Authorization: Basic ".base64_encode($username. ":". $password)
)
)));
?>
|
これはまず最初に変数「$hour」に時刻を入れてしまってから、それを文字列連結させたものをそのまま「$message」に入れるという手順です。
「$mes[0~4]」をdate関数に入れることはないので、「MySweetHoney」はちゃんとそのまま出力されます。
http://twitter.com/rishitest/status/1773359071
めでたし。
こんなかんじで、いろんな書き方ができます。
PR