[闲聊] 读取即时新闻标题的 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