[閒聊] 讀取即時新聞標題的 php 檔

作者: laechan (揮淚斬馬雲)   2018-01-04 11:12:12
只是簡單寫一下,土法煉鋼+陽春的寫法,用我架在自己 pc 上的 linux 跑的:
// 以下檔案是修改自 nobu 有先寫給 sanc 的 get_news.php 檔
// nobu 對讀回來的東西是把它當成物件處理, 我是硬幹直接當成字串
#!/usr/bin/php -q
<?php
// 讀網頁內容存成$fh, 傳回來是一堆亂碼
$fh=file_get_contents('https://tw.appledaily.com/new/realtime');
// 對$fh做編碼,先做 UTF-8 編碼,再做 BIG5 編碼
// 有些主機只需做一次編碼就可以
// 要使用 mb_convert_encoding 函數需先安裝 mbstring
// yum install php-mbstring
$encode=mb_convert_encoding($fh,'BIG5','UTF-8');
// 對$encode做 explode, 它參數的給法跟 sanc 顛倒, 存成 $tmps 字串陣列
$tmps=explode('tcode="',$encode);
// 讀出時間字串, 依給定的格式顯示(年-月-日)
// 在字串處理裡頭, .就是+ 的意思
// 要使用 DateTime 函數需先編輯 /etc/php.ini 在 [Date] 那邊
// 啟用 Date: Asia/Taiwan
$date = new DateTime();
$msg = $date->format('Y-m-d')." https://tw.appledaily.com/new/realtime\n";
$mark=0;
//對 $tmps 做 foreach, 這裡也跟 sanc 顛倒
foreach($tmps as $tmp)
{
// explode 出來的東西, 第0個不處理
if($mark==0)
{
$mark=1;
continue;
}
// 找每一個 $tmp 的第一個 " 出現的位置
// 因為我是對 tcode=" 這樣的東西做 explode, 則每一個 $tmp
// 都是新聞標題開頭, 而且標題的結尾必有 "
// 也就是原始是 tcode="13億人都驚呆了! 天空出現異象" bla bla
// ^^^^^^^ ^
// explode 的標的 ↑找這個的位置
$a=strpos($tmp,'"');
// 取出 $tmp 的標題, 從 0~ "的位置 這樣的長度出來
// 它實際取出來的就是 13億人都驚呆了! 天空出現異象
// 然後對取出來的東西加 \n, 再做字串的累加, 存到 $msg 內
$msg.=substr($tmp,0,$a)."\n";
}
// 最後 print 出 $msg
echo($msg);
// 也可以存檔
file_put_contents("/home/xxx/news",$msg);
?>
這樣的 php 檔假設叫 news.php 寫好後,ls -l,它預設是 -rw-rw-r

Links booklink

Contact Us: admin [ a t ] ucptt.com