= 1) ? $_GET['p'] : 1;
$itemPerPage = 12;
$itemStart = ($page - 1) * $itemPerPage;
# 讀入單文頁新聞內容
$newsItem = array();
$incfile = $NEWS_DATA_DIR . $cat_ename . '/' . $media_ename . '/' . $dt . '/' . $nid . '.inc';
$newsItem = LoadRequireFile($incfile);
if (empty($newsItem)) {
oops($cid);
exit;
}
# 紀錄 個人化 行為 OP
# 取出nid
if (empty($_COOKIE['nid'])) {
$expire = time() + 60 * 60 * 24 * 15;
setcookie("nid", $nid, $expire, '/');
} else {
$nid_oid = $_COOKIE['nid'];
$nid_arr = $nid . "," . $nid_oid;
$nid_arr = explode(",", $nid_arr);
#陣列去除重複的NID 及空白的NID
$nid_arr = array_unique($nid_arr);
$nid_arr = array_values($nid_arr);
foreach ($nid_arr as $key => $vv) {
if ($vv == "") {
unset($nid_arr[$key]);
}
}
$nid_arr = array_values($nid_arr);
#取得該篇新聞的NID 與COOLKIE 已存的陣列合併
$nid_arr_string = implode(",", $nid_arr);
$nid_arr_string = $nid . "," . $nid_arr_string;
#字串轉成陣列後,最後的值移至最前面
#NID 只取前5筆
$old_nid_new_arr = explode(",", $nid_arr_string);
foreach ($old_nid_new_arr as $key => $vv) {
if ($vv == "") {
unset($old_nid_new_arr[$key]);
}
}
$old_nid_new_arr = array_unique($old_nid_new_arr);
$old_nid_new_arr = array_values($old_nid_new_arr);
$old_nid_new_arr_2 = array_slice($old_nid_new_arr, 0, 6);
$old_nid_new_arr_2 = implode(",", $old_nid_new_arr_2);
#清空COOKIE的NID
#把新組成的NID字串放進COOKIE的NID
$expire = time() + 60 * 60 * 24 * 15;
setcookie("nid", $old_nid_new_arr_2, $expire, '/');
}
#檢查COOKIE(關鍵字及NID)的數量
#20180906
#關鍵字上限30個
#NID上限5個
# 將陣列json->array
$kk_arr = (!empty($_COOKIE['keyword_new'])) ? json_decode($_COOKIE['keyword_new'], true) : [];
$kk_arr = is_array($kk_arr) ? $kk_arr : [];
if (!empty($kk_arr)) {
$kk_arr = array_values($kk_arr);
}
$acc_new = [];
if (empty($newsItem['keyword'])) {
$acc_new = array_merge($kk_arr);
$acc_new = array_unique($acc_new);
$acc_new = $kk_arr;
} elseif ($kk_arr != "") {
$acc_new = array_merge($newsItem['keyword'], $kk_arr);
$acc_new = array_unique($acc_new);
if (!empty($acc_new)) {
$acc_new = array_values($acc_new);
}
} else {
$acc_new = array_merge($newsItem['keyword']);
$acc_new = array_unique($acc_new);
if (!empty($acc_new)) {
$acc_new = array_values($acc_new);
}
}
$keyword_num = count($acc_new);
$acc_new = array_slice($acc_new, 0, 20);
$acc_new_json = json_encode($acc_new, true);
setcookie("keyword_new", $acc_new_json, $expire, "/");
//避免爬蟲來打資料
if (!empty($_SERVER['HTTP_USER_AGENT']) && !preg_match('/bot|spider|crawler|search/i', $_SERVER['HTTP_USER_AGENT'])) {
# 紀錄 關建字
if ($newsItem['keyword_new'] != null) {
#新聞分類
$cat_ename = $newsItem['cat_ename'];
#關建字
$keyword_arr = array();
$keyword_arr = $newsItem['keyword'];
#新聞NID
$nid_arr = array();
$nid_arr = $nid;
unset($_COOKIE['keyword']);
setcookie("keyword_new", $acc_new_json, $expire, '/');
setcookie("cat_ename", $cat_ename, $expire, '/');
setcookie("cat_cname", $cat_cname, $expire, '/');
}
}
#DMP分類
$keyword_for_dmp = array('2865000000000000' => '行動支付|電子錢包|Apple Pay|Google Pay|Samsung Pay|LINE Pay|街口支付|台灣pay|PX Pay|拍錢包|悠遊付|歐付寶|橘子支付',
'2866000000000000' => 'toto衛浴|凱薩衛浴|kohler|免治馬桶|馬桶座|馬桶蓋|衛浴設備|室內裝修|裝潢|居家修繕',
'2867000000000000' => '醫療險|意外險|植牙|長照|失能|失智|十大死因|意外事件|癌症|猝死|心臟病|高血壓|車禍',
'2868000000000000' => '車禍|交通事故|車險|汽車|機車|超跑|電動車|新車|toyota|honda|福特|Lexus|賓士');
if (empty($_COOKIE["uuid"])) {
$uuid = uniqid(); // or use a real UUID
setcookie("uuid", $uuid, $expire, '/');
}
global $keyword_for_dmp;
$newsItem['nid'] = $nid;
# 用標題內文比對關建字對應 DMP 代碼,寫進資料庫
news_into_dmp($keyword_for_dmp, $newsItem['title'] . $newsItem['content'], $newsItem['nid']);
# 如果內文沒有圖片,但有列表圖片時,內文右上角顯示列表圖片
$content = $newsItem['content'];
if (is_array($newsItem['src'])) {
$pic_content = count($newsItem['src']);
}
$pic_content = $newsItem['src'];
if (preg_match('//i', $content)) {
} else {
if ($pic_content == 1) {
if (preg_match('/^/i', $content)) {
$content = preg_replace('/^(?:[\s ]*
]*>[\s ]*|[\s ]*)+/iu', '', $content);
$newsItem['src'][0] = changPhotoSize($newsItem['src'][0], 'm');
$newsContent_right = true;
}
if (preg_match('//i', $content) == false) {
$newsContent_right = true;
}
# 若 $newsItem['src'][0] 圖寬度達 400px 則改原尺寸獨立顯示
$imgpath = preg_replace('/\/newsdata/', $NEWS_DATA_DIR, $newsItem['src'][0]);
list($ImageWidth, $ImageHeight) = getimagesize($imgpath);
if ($ImageWidth >= 400) {
$content = '
' . $content;
$newsContent_right = false;
}
}
}
// 中央社 特例先改
if($media_ename == 'cna' && !empty($newsItem['src']))
{
$content = '
'.$content;
}
$content = preg_replace('/<[\/]*img[^>]*>/i', '', $content);
$content = preg_replace_callback('//', 'changePic', $content);
# 處理新聞內容
$content = preg_replace_callback('//', 'changeVideo', $content);
$content = filter3upBR($content);
# 將外網連結做rel="nofollow"的設定
$content = link_add_settings($content);
#新版 上下則 新聞(人氣新聞->改抓最新新聞)
$title = $newsItem['title'];
if (strstr($DEBUG_MODE, 'C')) {
echo '
';
echo 'Debug..';
echo '新聞分頁規則 [DEBUG_MODE]
';
echo '
';
}
if (strstr($DEBUG_MODE, 'C')) {
echo '
';
}
#設定本文出處 OR 新聞來源
if (!empty($special_media[$media_ename])) {
if (!empty($special_media[$media_ename][2])) {
$source = $special_media[$media_ename][2];
}
#食力FoodNEXT的新聞來源
#需要連結到對方該篇新聞的原文出處
#連結需另開
$source = $newsItem['source'];
$target = "_blank";
}
#媒體名稱改名 作者改名
if ($newsItem['media_cname'] == "設計家") {
$newsItem['media_cname'] = "設計家Searchome";
$newsItem['author'] = "設計家Searchome";
}
#AI關鍵字
#關鍵字上限50組 //
#http://pyimg.pchome.com.tw/kwanalytics/k2/?url=https://news.pchome.com.tw/society/twpowernews/20200623/index-15929062977274347002.html
//$url_n ="https://news.pchome.com.tw";
#假設單文頁URL 有超過1頁 要把頁數過濾掉
#過濾//
//$local_url = $_SERVER["REQUEST_URI"];
//$local_url = preg_replace("/_\d{1,2}/",'',$local_url);
//$local_url = preg_replace("/\/\//",'/',$local_url);
//$local_url = $url_n.$local_url;
$ai_keyword_arr = array();
//$api_url = 'http://pyimg.pchome.com.tw/kwanalytics/all/?url='.$local_url;
//$curl = curl_init();
//curl_setopt($curl, CURLOPT_URL,$api_url);
//curl_setopt($curl, CURLOPT_HEADER, 0);
//curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//curl_setopt($curl, CURLOPT_POST, 1);
//curl_setopt($curl, CURLOPT_POSTFIELDS, 'false');
//curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 3);
//curl_setopt($curl, CURLOPT_TIMEOUT, 5);
//$vai = curl_exec($curl);
//curl_close($curl);
//$ai_keyword_tmp = json_decode($vai, true);
//
//foreach($ai_keyword_tmp as $key =>$vai){
// $vai = preg_replace("/::(\w+)/",'', $vai);
// if(!empty($vai)){
// //將字串中的|| 分割
// $vai_ans = explode("||",$vai);
// $ai_keyword_arr[] = array_slice($vai_ans,0,50);
// }
//}
# 插入資料
$insertItem = array(
'content' => $content,
'pubDate' => date('Y-m-d H:i:s', strtotime($newsItem['pubDate'])),
'cat_cname' => $cat_cname,
'cat_ename' => $cat_ename,
'media_cname' => $media_cname,
'media_ename' => $media_ename,
'media_link' => $mediaAry[$media_ename][5], #連結以global_var 為主
'news_link' => '/' . $cat_ename . '/' . $media_ename . '/' . $dt . '/index-' . $nid . '.html',
'photo_link' => '/' . $cat_ename . '/' . $media_ename . '/' . $dt . '/index-' . $nid . '.html',
'reply_link' => '/' . $cat_ename . '/' . $media_ename . '/' . $dt . '/index-' . $nid . '.html',
'fastreply_link' => '/reply/' . $cat_ename . '/' . $media_ename . '/' . $dt . '/' . $nid,
'fastvote_link' => '/vote/' . $cat_ename . '/' . $media_ename . '/' . $dt . '/' . $nid,
'mail_link' => '/' . $cat_ename . '/' . $media_ename . '/' . $dt . '/mail-' . $nid . '.html',
'fastmail_link' => '/mail/' . $cat_ename . '/' . $media_ename . '/' . $dt . '/' . $nid,
'print_link' => '/' . $cat_ename . '/' . $media_ename . '/' . $dt . '/print-' . $nid . '.html',
'next_news' => $next_news,
'pre_news' => $pre_news,
'nid' => $nid,
'source' => $source,
'target' => $target,
'mid' => $mid,
'cat_link' => '/cat/' . $cat_ename,
'pic' => '',
'media_plink' => 'media/' . $media_ename, #新聞媒體頁網址
);
$newsItem = is_array($newsItem) ? $newsItem : array();
$newsItem = array_merge($newsItem, $insertItem);
#如果有影片 則抓下該篇影音新聞的封面圖
if (!empty($newsItem['video'][0])) {
if ((preg_match('/embed\/([^\?]+)/i', $newsItem['video'][0], $matches) || preg_match('/v[\/=]([^&\?]+)/i', $newsItem['video'][0], $matches))) {
$youtube_img = "https://img.youtube.com/vi/" . $matches[1] . "/sddefault.jpg";
if (!page_exists($youtube_img)) {
$youtube_img = "https://img.youtube.com/vi/" . $matches[1] . "/hqdefault.jpg";
}
$newsItem['video']['img'] = $youtube_img;
}
$final_video = video_schema($newsItem);
}
#新聞單文增加結構化資料
$repoet = structure_repoet($newsItem);
$final_BreadcrumbList = BreadcrumbList_schema($newsItem);
#記錄NID
$head_nid = array();
$head_nid[]['nid'] = trim($newsItem['nid']);
# 媒體書店 內文 調整
if ($mid == "292") {
$newsItem['content'] = str_replace(" 出版社", " 出版社", $newsItem['content']);
$newsItem['content'] = str_replace(" 出版日期", " 出版日期", $newsItem['content']);
//內文加工
$newsItem['content'] = preg_replace("/
]+)\">

$vv) {
$hot_news_id[] = $vv['nid'];
}
foreach ($newCatNewsItem as $kk => $vv) {
$new_news_id[] = $vv['nid'];
}
#整理資訊 如果該新聞的作者欄位是空值 強制加上媒體名稱
if (empty($newsItem['author'])) {
$newsItem['author'] = $media_cname;
}
# 右欄空氣品質
$rightAir = rightAir();
# 右欄氣象資訊
$rightWeather = right_get_weather();
# 右欄樂透
$rightLottery = rightLottery();
# 右欄星座
$rightConstellation = rightConstellation();
# 右欄媒體名單
$collMediaItem = rightCollMedia();
# 頁面資訊
$html_title = $newsItem['title'] . ' - ' . $newsItem['cat_cname'] . '新聞 - PChome Online 新聞';
# 頁面資訊(fb)
$html_title_fb = $newsItem['title'];
$html_description = $newsItem['summary'];
#頁面關鍵字(META)
#如果customize_keyword 有值 以 customize_keyword 為主
#關鍵字只取6個
$keyword_arr = array();
if (!empty($newsItem['customize_keyword'])) {
$keyword_arr = $newsItem['customize_keyword'];
} else {
$keyword_arr = $newsItem['keyword'];
}
if (!empty($keyword_arr)) {
$keyword_arr = array_slice($keyword_arr, 0, 6);
}
foreach ($keyword_arr as $key => $val) {
$html_keywords .= $val . ',';
}
$html_keywords = trim($html_keywords);
$html_keywords = substr($html_keywords, 0, -1);
# 廣告
switch ($cat_ename) {
# 財經
case 'finance':
# 廣告
$UAD = getUserAD(12, 13, 20, 34, 40, 90, 91, 92, 93, 94, 85);
break;
# 汽車
case 'car':
# 廣告
$UAD = getUserAD(12, 13, 14, 20, 40, 83, 84, 85, 90, 91, 92, 93, 94);
break;
# 健康
case 'healthcare':
# 廣告
$UAD = getUserAD(12, 13, 15, 20, 34, 40, 90, 91, 92, 93, 94);
break;
# 娛樂
case 'entertainment':
# 廣告
$UAD = getUserAD(12, 13, 15, 20, 34, 40, 90, 91, 92, 93, 94);
break;
case 'china':
# 廣告
$UAD = getUserAD(12, 13, 15, 20, 34, 40, 90, 91, 92, 93, 94);
break;
default:
# 廣告
$UAD = getUserAD(12, 13, 20, 34, 40, 90, 91, 92, 93, 94);
break;
}
# 底下ad_extra 廣告
$ad_extra = ad_extra();
# 時間檢測
PageLoadCostTime();
# 記憶體檢測
PageLoadCostMemory();
# 通知設定
$news_notice = new news_notice();
$news_notice->insert_news($cid, $mid, $nid);
# 專題麵包屑文字
$featuresBreadCrumbsArr = call_user_func(function () use ($DATA_DIR) {
$incfile = $DATA_DIR . 'features_topic/head_auto_new.inc';
if (!file_exists($incfile)) {
return [];
}
$featuresItem = LoadRequireFile($incfile) ;
if (!is_array($featuresItem)) {
return [];
}
$featuresItemSort = [];
foreach ($featuresItem as $features) {
$sort_key = sprintf('%s_%s', $features['create_time'], $features['fid']);
$featuresItemSort[$sort_key] = $features;
}
krsort($featuresItemSort);
$featuresBreadCrumbsArr = [];
foreach ($featuresItemSort as $features) {
if (!isset($featuresBreadCrumbsArr[$features['f_label']])) {
$featuresBreadCrumbsArr[$features['f_label']] = [
'fid' => $features['fid'],
'f_bread_crumbs' => $features['f_bread_crumbs'],
'f_name' => $features['f_name'],
'f_desc' => $features['f_desc'],
'f_img5' => $features['f_img5'],
'create_time' => $features['create_time']
] ;
}
}
return $featuresBreadCrumbsArr ;
});
$breadCrumbsArr = call_user_func(function () use ($featuresBreadCrumbsArr, $newsItem) {
$breadCrumbsArr = [];
if (!isset($newsItem['keyword']) || !is_array($newsItem['keyword'])) {
return $breadCrumbsArr ;
}
foreach ($newsItem['keyword'] as $newsKeyword) {
if (!empty($featuresBreadCrumbsArr[$newsKeyword])) {
$breadCrumbsArr = $featuresBreadCrumbsArr[$newsKeyword];
break;
}
}
return $breadCrumbsArr ;
});
$featuresBreadCrumbs = '';
$featuresUrl = '';
if (!empty($breadCrumbsArr)) {
$featuresBreadCrumbs = $breadCrumbsArr['f_bread_crumbs'];
$featuresUrl = sprintf('/features/living/%s', $breadCrumbsArr['fid']);
$featuresName = $breadCrumbsArr['f_name'];
$featuresDesc = $breadCrumbsArr['f_desc'];
$featuresCoverImg = sprintf('%s?v=%s', $breadCrumbsArr['f_img5'], $breadCrumbsArr['create_time']);
}
# 讀入版型
$template = $TEMPLATES . 'base_body.tpl.html';
require_once($template);
# PV 記錄
pv('N', $cid, $mid, $nid);
$pv_js_code = pv_js_code('N', $cid, $mid, $nid);
function changePic($url)
{
global $newsItem;
return $newsItem['src'][$url[1]] ? '
' : '';
}
function empty_count($ar)
{
$empty_count = 0;
foreach ($ar as $k => $v) {
if (preg_match('/^![]()