asklife

IT&Life

Tag: php

phpでリンクや広告をランダムに表示させるスクリプト

phpでランダムに表示させるスクリプト

?php
$data = file('http://asklife.info/sites.txt');
srand(time());
shuffle($data);
for($i = 0; $i < 20; $i++){
	  // $dataの先頭要素を表示
	  echo $data[$i];	}
?>

同じディレクトリにsites.txtを置きます。
中身はこんな感じ。

a href="http://asklife.info/archives/641">Google AJAX Feed APIを使ってアンテナサイトを作ってみる</a>
a href="http://asklife.info/archives/685">Googleを使って個人が動画サイトを運営する方法まとめ</a></p>
a href="http://asklife.info/archives/510">あなたがWordPressをCMSとして使う時の必須プラグイン10個</a>

実際に動いている様子は↓を見てください。

twitterで特定のキーワードをつぶやいた人を自動でフォローする設定にしたので解説

twitterで特定のつぶやきをした人を自動でフォローするスクリプト

※この情報は2011/1/4のものです。現在(2013年)では古いので使えません。
※また、当時はTwitterが初期の頃でこんなこともありでしたが、今(2013年)Twitterはマナーを大事にするポリシーに変わっています。自己責任でどうぞ。

<?php
define("CONSUMER_KEY" , "");
define("CONSUMER_SECRET" , "");
define("OAUTH_TOKEN" , "");
define("OAUTH_TOKEN_SECRET" , "");
define("KEYWORD" , "特定のキーワード");
define("SEARCH_COUNT" , 10);
require_once("twitteroauth/twitteroauth.php");


// search 
function search() {
	$ch = curl_init("http://search.twitter.com/search.json?q=
" . urlencode(KEYWORD) . "&rpp=" . SEARCH_COUNT . "&lang=ja");
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	$res = curl_exec($ch);
	curl_close($ch);
	$ret = array();
	if (!$res) {
		fputs(STDERR , "Failed to get response\n");
		return $ret;
	}
	$json = json_decode($res);
	if (!$json) {
		fputs(STDERR , "Failed to get json\n");
		return $ret;
	}
	foreach ($json->results as $r) {
		if (isset($r->from_user)) {
			$ret[] = $r->from_user;	
		}
	}
	return $ret;
}

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, 
OAUTH_TOKEN , OAUTH_TOKEN_SECRET);
// get friends
$friends_data = $connection->get("statuses/friends");
$friends = array();
foreach ($friends_data as $f) {
	if (isset($f->screen_name)) {
		$friends[] = $f->screen_name;	
	}
}

// search
$result = search();

foreach ($result as $r) {
	if (!in_array($r , $friends)) {
		// follow
		$connection->post("friendships/create", array("id" => $r));
		fputs(STDOUT , "Follow {$r}\n");
		$friends[] = $r;
		sleep(5);
	}
}
?>

keyword_follow_oauth.php で保存してください。

こちらでzipをダウンロードしてtwitteroauthフォルダをkeyword_follow_oauth.phpと同じディレクトリにおいて下さい。

参考
Twitterで特定のキーワードをつぶやいたユーザーを自動でフォローするPHPスクリプト (OAuth版)

おすすめ関連記事
twitterで特定のキーワードをつぶやいた人を自動でフォローする設定にしたので解説
twitter自動リムーブ(オートアンフォロー)機能を追加したので解説
5分で出来るさくらサーバーでcronの設定をする方法

参考書籍

複数APIの読み込みを高速化させる

マッシュアップサイトで必須

phpで複数APIを叩く際に、数が多ければ多いほど遅くなります。
そんな時に使うのはmultiRequest関数です。
データの読み込みを並列処理にして一度にデータを取得してしまおうというアイデアです。

<?php 

function multiRequest($data, $options = array()) { 

  // array of curl handles 
  $curly = array(); 
  // data to be returned 
  $result = array(); 

  // multi handle 
  $mh = curl_multi_init(); 

  // loop through $data and create curl handles 
  // then add them to the multi-handle 
  foreach ($data as $id => $d) { 

    $curly[$id] = curl_init(); 

    $url = (is_array($d) && !empty($d['url'])) ? $d['url'] : $d; 
    curl_setopt($curly[$id], CURLOPT_URL,            $url); 
    curl_setopt($curly[$id], CURLOPT_HEADER,         0); 
    curl_setopt($curly[$id], CURLOPT_RETURNTRANSFER, 1); 

    // post? 
    if (is_array($d)) { 
      if (!empty($d['post'])) { 
        curl_setopt($curly[$id], CURLOPT_POST,       1); 
        curl_setopt($curly[$id], CURLOPT_POSTFIELDS, $d['post']); 
      } 
    } 

    // extra options? 
    if (!empty($options)) { 
      curl_setopt_array($curly[$id], $options); 
    } 

    curl_multi_add_handle($mh, $curly[$id]); 
  } 

  // execute the handles 
  $running = null; 
  do { 
    curl_multi_exec($mh, $running); 
  } while($running > 0); 

  // get content and remove handles 
  foreach($curly as $id => $c) { 
    $result[$id] = curl_multi_getcontent($c); 
    curl_multi_remove_handle($mh, $c); 
  } 

  // all done 
  curl_multi_close($mh); 

  return $result; 
} 

?>

次のようにURLの配列を渡してデータを一括取得できます。

<?php 

$data = array( 
  'http://search.yahooapis.com/VideoSearchService/V1/videoSearch?appid=YahooDemo&query=Pearl+Jam&output=json', 
  'http://search.yahooapis.com/ImageSearchService/V1/imageSearch?appid=YahooDemo&query=Pearl+Jam&output=json', 
  'http://search.yahooapis.com/AudioSearchService/V1/artistSearch?appid=YahooDemo&artist=Pearl+Jam&output=json' 
); 
$r = multiRequest($data); 

echo 'pre'; 
print_r($r);

WordPressに新着記事を表示させる方法まとめ

WordPressのindexページで新着記事一覧を表示させる方法

WPのデザイン変更に伴ってindexページに新着記事を表示させることにしました。

以下コピペで表示が可能になります。

<ul>
<?php
$posts = get_posts("numberposts=5&category=&orderby=post_date&offset=0");
foreach ($posts as $post):
setup_postdata($post);
?>
<li>
<?php the_time('Y.m.d') ?>
<a href="<?php the_permalink() ?>">
<?php echo mb_convert_encoding(get_the_title($post->ID), 'UTF-8'); ?>
</a>
</li>
<?php endforeach; ?>
</ul>
<ul>
<?php$posts =get_posts("numberposts=5&category=&orderby=post_date&offset=0");
foreach ($posts as $post):setup_postdata($post);?>
<li>
<?php the_time('Y.m.d') ?>
<a href="<?php the_permalink() ?>">
<?php echo mb_convert_encoding(get_the_title($post->ID), 'UTF-8'); ?>
</a>
</li>
<?php endforeach; ?>
</ul>

© 2019 asklife

Theme by Anders NorenUp ↑