2007年3月9日 星期五

PHP食譜-Yahoo 字典 Plugin

[菜 名]

Yahoo 字典 Plugin


[材 料]
PHP 4.2+ , 5+
jQuery 1.1.2
PHPRPC 3.0 beta
Yahoo 字典

[做法]

抓取Yahoo 字典的資料再以PHP這把菜刀加以料理,料理過程如下…

function yahoo_dict($search){
$web=file_get_contents('http://tw.dictionary.yahoo.com/search?ei=UTF-8&p='.$search);//從這網址去抓取網頁
preg_match('/
(.*)
/s',$web,$match);//取出要的部份
if($match[0]!=''){
$str=strip_tags($match[0]);//去掉html tag
$str=str_replace("\n\n\n",'',$str);//將多餘的換行取代為空白
return nl2br(preg_replace('/您是不是還想知道....*/s', '', $str));//再將您是不是還想知道....去掉,最後將\n換為

}
return '';//如果找不到資料就傳回空字串
}

將不要的骨頭拿掉後,加上PHPRPC後,就是一道美味的Server端的菜了。

2.再來要擺上些裝飾的東西,佈局如下:

<input id="q" name="q" type="text"><input id="search" name="submit" value="查尋" type="button"><img id="waiting" src="http://www.morgan724.com/drupal/indicator.gif" style="display: none;" />
<p id="dict_p"></p>
<input id="clear_rs" name="clear_rs" value="清除" style="display: none;" align="right" type="button">

控制火侯:

$(document).ready(function(){
$('#search').click(
function(){
$('#waiting').show();
$('#clear_rs').trigger("click");
yahoo_dict();
}
);
$('#clear_rs').click(
function(){
$(this).hide('slow');
$('#dict_p').hide('slow');
}
);
}
)
var rpc = new PHPRPC_Client();
rpc.useService('http://www.morgan724.com/drupal/yahoo_dict.php');
function yahoo_dict(){
if (rpc.ready) {
rpc.yahoo_dict($('#q').val(),function(result){
$('#dict_p,#clear_rs').show('slow');
$('#waiting').hide();
$('#dict_p').html(result);
})
}else {
alert('rpc not ready!');
}
}

效果如BawBaw私人招待所左側的Yahoo 天氣,請大家試試看吧。

[貼 心 叮 嚀]
加上快取機制會更美味喔,才不會讓客人等太久。

完整範例:
yahoo_dict.zip