|
忙しさにかまけて記事の更新がすっかり滞ってしまいました。 exirの解析はちょっと時間がかかるので手軽なところから。 Yahoo!デベロッパーネットワークで告知されているとおりY!APIのドメインが変更されるようです。移行期間の終了日は未定、という何とも忘れそうな話なのでさっさと片付けることにしました。 自分はいろいろなところでY!APIは使っているはずですが、どこで使っているのかよく覚えていません。というわけでまず探すスクリプトから作ることにします。 <?php
こんなコードをロリポップにアップして実行してみましたが何も表示されず。(Y!のブログにはバッククォートが表示されない模様、@マークのキーをShift押しながら表示されるやつです、PHP: 実行演算子 - Manual)echo find . -type d; 残念ながら別の方法でやるしかないようです。 なお、zshなら grep yahoo.co.jp **/*.php と簡単にカレントディレクトリ以下の全.phpファイルに対して検索がかけられて簡単にわかります。カレントディレクトリ、というのはWindowsで言うなら今開いているフォルダ、です。 findとgrepを使うなら find . -name "*.php" -print|xargs grep yahoo.co.jp こんな感じでしょうか。 自分の借りているロリポップには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 です。 ・IT系ニュース専用検索エンジン - Web Services by Yahoo! JAPAN, はてブ ・ytab ・あなたのサイトはYahoo! JAPANで何位? ・Yahoo!ウェブ検索APIのライブラリ一通りできた - ホリデープログラミング入門 - Yahoo!ブログ だいぶ古いものばかりですが、気になるのがあったらご覧ください。
|

- >
- コンピュータとインターネット
- >
- インターネット
- >
- ネットサービス



