ホリデープログラミング入門

ホリデーにプログラミングを楽しむための入門 by 船木信宏

全体表示

[ リスト ]


Y!のAPIのドメインがyahoo.co.jpからyahooapis.jpに変更


忙しさにかまけて記事の更新がすっかり滞ってしまいました。
exirの解析はちょっと時間がかかるので手軽なところから。

Yahoo!デベロッパーネットワークで告知されているとおりY!APIのドメインが変更されるようです。移行期間の終了日は未定、という何とも忘れそうな話なのでさっさと片付けることにしました。

自分はいろいろなところでY!APIは使っているはずですが、どこで使っているのかよく覚えていません。というわけでまず探すスクリプトから作ることにします。

Linuxコマンドの実行


<?php
echo find . -type d;
こんなコードをロリポップにアップして実行してみましたが何も表示されず。(Y!のブログにはバッククォートが表示されない模様、@マークのキーをShift押しながら表示されるやつです、PHP: 実行演算子 - Manual
残念ながら別の方法でやるしかないようです。

なお、zshなら
grep yahoo.co.jp **/*.php
と簡単にカレントディレクトリ以下の全.phpファイルに対して検索がかけられて簡単にわかります。カレントディレクトリ、というのはWindowsで言うなら今開いているフォルダ、です。

findとgrepを使うなら
find . -name "*.php" -print|xargs grep yahoo.co.jp
こんな感じでしょうか。

dirで再帰的にファイルを探す


自分の借りているロリポップには16845ファイルしかないようなので(管理画面のディスク使用量で見た限り)安直に.phpファイルを探して、中身をreadして文字列一致を取ることにしました。桁違いにファイル数が多い場合は、あるディレクトリは走査しない、といった工夫をした方がいいでしょう。

<?php
ini_set('max_execution_time', 0);
define('SEARCH_QUERY', 'yahoo.co.jp/');

recursivesearch(dirname(__FILE__)); // dirname(__FILE__)で当該ファイルのカレントディレクトリが得られる

function recursivesearch($path)
{
$d = dir($path);
while (false !== ($entry = $d->read())) {
if ($entry == '.' || $entry == '..') { // カレントディレクトリを表す"."と親ディレクトリを表す".."は無視
continue;
}
$next = "$path/$entry";
if (is_dir($next)) {
recursivesearch($next); // 再帰的に呼び出す
} else if (strpos($entry, '.php') !== false) { // ファイル名に.phpが含まれているか、厳しくいくならsubstr($entry, -4) === '.php'
if (strpos(file_get_contents($next), SEARCH_QUERY) !== false) {
echo $next, "<br />\n";
}
}
}
$d->close();
}
思ったより速く、数秒で結果が出ました。
SEARCH_QUERYで指定した文字列(yahoo.co.jp/)が含まれたファイル名の一覧です。あとは手動で見ていきましょう。

凝るなら、strposでマッチした近辺の文字列を取ってくるとかすればより検索エンジンらしい結果を出せます。

置換


不用意に自動で置換すると動作しなくなりそうなので、今回は1つずつ見ました。
vimでファイル内の文字列を置換するときは、
:%s/api.search.yahoo.co.jp/search.yahooapis.jp/g
です。

使っていた箇所



だいぶ古いものばかりですが、気になるのがあったらご覧ください。

閉じる コメント(0)

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

.


プライバシー -  利用規約 -  メディアステートメント -  ガイドライン -  順守事項 -  ご意見・ご要望 -  ヘルプ・お問い合わせ

Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved.

みんなの更新記事