= 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('/^