From 3bbb1c025733be0231cd0b43ccf7507e19115b5d Mon Sep 17 00:00:00 2001 From: LMR <59361885@qq.com> Date: Thu, 23 May 2024 09:55:05 +0800 Subject: [PATCH] fix --- application/controllers/infofix.php | 51 +++++++++++++++++++++--- application/models/information_model.php | 25 ++++++++---- 2 files changed, 63 insertions(+), 13 deletions(-) diff --git a/application/controllers/infofix.php b/application/controllers/infofix.php index 60e27149..9f3de4b0 100644 --- a/application/controllers/infofix.php +++ b/application/controllers/infofix.php @@ -21,7 +21,7 @@ class infofix extends CI_Controller // json参数 $site = $this->input->get_post('site'); $keys = $this->input->get_post('keys'); - $keyArr = explode(',', $keys); + $key_arr = explode(',', $keys); // 容错 if (empty($site) || empty($keys) || strpos($keys, '/') === false) { @@ -30,16 +30,20 @@ class infofix extends CI_Controller } // 关键字信息 - $rs = $this->Information_model->list_by_keywords($site, $keyArr); + $rs = $this->Information_model->list_by_keywords($site, $key_arr); // 调整数据 foreach ($rs as $info) { - $keycount = array(); - foreach ($keyArr as $key) { + $key_with_content = array(); + $key_with_json = array(); + foreach ($key_arr as $key) { // $info->ic_content = utf8_encode($info->ic_content); // $info->ic_url = utf8_encode($info->ic_url); + // 链接 $sub_url = $info->ic_url == $key ? $info->ic_url : ''; + + // 信息内容 $pos_content = 0; $pos_content = mb_stripos($info->ic_content, $key); $sub_content = array(); @@ -48,11 +52,46 @@ class infofix extends CI_Controller $pos_content = mb_stripos($info->ic_content, $key, $pos_content + mb_strlen($key)); } + + // amp_json + $sub_content2 = array(); + if ($info->amp_json) { + $pos_content2 = 0; + $pos_content2 = mb_stripos($info->amp_json, $key); + while ($pos_content2) { + array_push($sub_content2, '[...' . mb_substr($info->amp_json, $pos_content2 - 20, mb_strlen($key) + 20 * 2) . '...]'); + $pos_content2 = mb_stripos($info->amp_json, $key, $pos_content2 + mb_strlen($key)); + } + } + + // amp_body + $sub_content3 = array(); + if ($info->amp_body) { + $pos_content3 = 0; + $pos_content3 = mb_stripos($info->amp_body, $key); + while ($pos_content3) { + array_push($sub_content3, '[...' . mb_substr($info->amp_body, $pos_content3 - 20, mb_strlen($key) + 20 * 2) . '...]'); + $pos_content3 = mb_stripos($info->amp_body, $key, $pos_content3 + mb_strlen($key)); + } + } + if ($sub_url != '' || count($sub_content) != 0) { - array_push($keycount, array('key' => $key, 'sub_url' => $sub_url, 'sub_content' => $sub_content)); + array_push( + $key_with_content, + array( + 'key' => $key, + 'sub_url' => $sub_url, + 'sub_content' => $sub_content, + 'sub_json' => $sub_content2, + 'sub_body' => $sub_content3 + ) + ); } } - $info->ic_content = $keycount; + + $info->ic_content = $key_with_content; + unset($info->amp_json); + unset($info->amp_body); } echo json_encode($rs); diff --git a/application/models/information_model.php b/application/models/information_model.php index b25b4c7e..9f71cfb7 100644 --- a/application/models/information_model.php +++ b/application/models/information_model.php @@ -794,16 +794,27 @@ class Information_model extends CI_Model foreach ($keywords as $key) { $keysql .= ' OR ic_content like \'%' . $key . '%\''; $keysql .= ' OR ic_url like \'%' . $key . '%\''; + $keysql .= ' OR m1.im_value like \'%' . $key . '%\''; + $keysql .= ' OR m2.im_value like \'%' . $key . '%\''; } $search = ' AND (1=0 ' . $keysql . ')'; $sql = " - SELECT ic_id, ic_url, ic_content - FROM infoStructures is1 - INNER JOIN infoContents ic ON ic.ic_id = is1.is_ic_id - AND ic.ic_sitecode = is1.is_sitecode - WHERE ic_status = 1 AND is1.is_sitecode = ? - " . $search . " - ORDER BY ic_datetime DESC + SELECT ic_id, ic_url, ic_content, m1.im_value AS amp_json, m2.im_value AS amp_body + FROM infoStructures is1 + INNER JOIN infoContents ic + ON ic.ic_id = is1.is_ic_id + AND ic.ic_sitecode = is1.is_sitecode + LEFT JOIN infoMetas m1 + ON m1.im_ic_id = ic.ic_id + AND m1.im_key = 'AMP_JSON' + LEFT JOIN infoMetas m2 + ON m2.im_ic_id = ic.ic_id + AND m2.im_key = 'AMP_BODY_PC' + WHERE ic_status = 1 + AND is1.is_sitecode = ? + AND ic_status = 1 + " . $search . " + ORDER BY ic_datetime DESC "; $query = $this->HT->query($sql, array($site)); // print_r($this->HT->queries);