プロが教えるわが家の防犯対策術!

初めまして。閲覧ありがとうございます。
PHPを勉強中の素人です。
「Twitter」のBOTを何とか作りたいと思い、PHPを勉強しつつPHPのソースを公開している方を参考にさせて頂きながら何とか組んでみたのですが、どうしてもエラーが出てしまい動かせません。
構文エラーということは分かるのですが、何処がおかしいのか、分かる方は教えて頂けないでしょうか?初心者丸出しの質問で申し訳ありません。
長いのですがソースを書きます。

<?php

require_once 'HTTP/Client.php';
//自分のタイムラインを所得
$username = "ユーザー名";
$password = "パス";
$page = "statuses/friends_timeline.xml";

$basic = array('Authorization'=>'Basic '.base64_encode($username.':'.$password));

$client = new HTTP_Client(null, $basic);
$client->get("http://twitter.com/".$page );

$response = $client->currentResponse();
$body = mb_convert_encoding($response['body'], "EUC-JP","auto");

$xml = new SimpleXMLElement($body);

//ランダム発言を定義
$msg_pattern = array( "[someone]発言0",

"[someone]発言1",

"[someone]発言2",

"[someone]発言3",

"[someone]発言4",

);

if($xml) {

//var_dump ($xml);

//該当する最新5件の発言を取得

for($i=0;$i<5;$i++){

$post_member = (string)$xml->entry[$i]->title;

$post_date = $xml->entry[$i]->updated;

//発言時刻を取得し、タイムスタンプに

// 32400はGMTと日本時間とのズレ(9時間)

$date_array = array();

$rcd = mbereg("^([0-9]{4}).([0-9]{2}).([0-9]{2})T([0-9]{2}).([0-9]{2}).([0-9]{2})Z$",$post_date,$date_array);

$post_time = 32400 + mktime($date_array[4],$date_array[5],$date_array[6],$date_array[2],$date_array[3],$date_array[1]);

//発言の経過時間

$pasttime = $now_time - $post_time;

//発動は15分以内の発言に対して

if($pasttime > 0 && $pasttime < 900 && !array_search($post_member,$followed)){

$tofollow = "@".$post_member." ";

//発言をランダムで選択、相手の名前を置換

$msg = preg_replace("[\[someone\",$tofollow,$msg_pattern[mt_rand(0,count($msg_pattern)-1)]);

//twitterへの書き込み

$params = "status=". rawurlencode($msg);

$result = file_get_contents($url.$params , false, stream_context_create(array(

"http" => array(

"method" => "POST",

"header" => "Authorization: Basic ". base64_encode($username. ":". $password)

)

)));


//

array_push($followed,$post_member);

}

}

}else{

return;

}

?>

A 回答 (2件)

//発言をランダムで選択、相手の名前を置換


$msg = preg_replace("[\[someone\",$tofollow,$msg_pattern[mt_rand(0,count($msg_pattern)-1)]);

ここが " で閉じてないです

この回答への補足

ありがとうございます。
$msg = preg_replace("[\[someone\",$tofollow,$msg_pattern[mt_rand(0,count($msg_pattern)-1)]);
を、
$msg = preg_replace("[\[someone]\,$tofollow,$msg_pattern[mt_rand(0,count($msg_pattern)-1)]");
と直してみたのですが、やはり構文ミスが出てしまいます・・
"だけでなく[の数も違う気がしたのでいじってみたのですが違ったのでしょうか?
もし宜しければ、教えていただけると幸いです!
申し訳ありません・・!

補足日時:2009/04/23 22:28
    • good
    • 0

PHPをブラウザで実行したら、何行目にエラーがある、と表示されるのではないでしょうか?


またエラーの際に表示される文章によって何故エラーが出るのかもわかるかと思います。
行数がわかればその周辺を確認して見ることで原因を見つけやすくなるのでは・・・?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!