作者 刘锟

update

@@ -80,21 +80,21 @@ class ProjectUpdate extends Command @@ -80,21 +80,21 @@ class ProjectUpdate extends Command
80 //获取网站配置 80 //获取网站配置
81 $link_type = 0; 81 $link_type = 0;
82 $url_web_config = 'https://' . $domain_arr['host'] . '/wp-content/cache/user_config.text'; 82 $url_web_config = 'https://' . $domain_arr['host'] . '/wp-content/cache/user_config.text';
83 - $data_config = http_get($url_web_config, ['charset' => 'UTF-8']); 83 + $data_config = curl_c($url_web_config);
84 if ($data_config) { 84 if ($data_config) {
85 $link_type = $data_config['link_type']; 85 $link_type = $data_config['link_type'];
86 } 86 }
87 //获取所有语种 87 //获取所有语种
88 $language_list = []; 88 $language_list = [];
89 $url_language = 'https://' . $domain_arr['host'] . '/wp-content/plugins/proofreading/json/user_language.json'; 89 $url_language = 'https://' . $domain_arr['host'] . '/wp-content/plugins/proofreading/json/user_language.json';
90 - $data_language = http_get($url_language, ['charset' => 'UTF-8']); 90 + $data_language = curl_c($url_language);
91 if ($data_language) { 91 if ($data_language) {
92 $language_list = array_column($data_language, 'short'); 92 $language_list = array_column($data_language, 'short');
93 } 93 }
94 //获取所有页面 94 //获取所有页面
95 $page_list = []; 95 $page_list = [];
96 $url_page = 'https://' . $domain_arr['host'] . '/wp-content/cache/pages_list.json'; 96 $url_page = 'https://' . $domain_arr['host'] . '/wp-content/cache/pages_list.json';
97 - $data_page = http_get($url_page, ['charset' => 'UTF-8']); 97 + $data_page = curl_c($url_page);
98 if ($data_page) { 98 if ($data_page) {
99 $page_list = array_column($data_page, 'path'); 99 $page_list = array_column($data_page, 'path');
100 } 100 }
@@ -105,7 +105,7 @@ class ProjectUpdate extends Command @@ -105,7 +105,7 @@ class ProjectUpdate extends Command
105 if ($api_type == 'category') { 105 if ($api_type == 'category') {
106 //分类 106 //分类
107 $url = $api_url . '?' . http_build_query(['w' => 'category']); 107 $url = $api_url . '?' . http_build_query(['w' => 'category']);
108 - $data = http_get($url, ['charset' => 'UTF-8']); 108 + $data = curl_c($url);
109 if (isset($data['code']) && $data['code'] == 200) { 109 if (isset($data['code']) && $data['code'] == 200) {
110 $items = $data['data'] ?? []; 110 $items = $data['data'] ?? [];
111 $this->category_insert($project_id, $items, 0); 111 $this->category_insert($project_id, $items, 0);
@@ -115,14 +115,14 @@ class ProjectUpdate extends Command @@ -115,14 +115,14 @@ class ProjectUpdate extends Command
115 } elseif ($api_type == 'tag') { 115 } elseif ($api_type == 'tag') {
116 //关键词 116 //关键词
117 $url = $api_url . '?' . http_build_query(['w' => 'tag', 'page' => 1, 'pagesize' => 0]); 117 $url = $api_url . '?' . http_build_query(['w' => 'tag', 'page' => 1, 'pagesize' => 0]);
118 - $data = http_get($url, ['charset' => 'UTF-8']); 118 + $data = curl_c($url);
119 if (isset($data['code']) && $data['code'] == 200) { 119 if (isset($data['code']) && $data['code'] == 200) {
120 $count = $data['data']['count'] ?? 0; 120 $count = $data['data']['count'] ?? 0;
121 121
122 $total_page = ceil($count / $page_size); 122 $total_page = ceil($count / $page_size);
123 for ($page = 1; $page <= $total_page; $page++) { 123 for ($page = 1; $page <= $total_page; $page++) {
124 $url_page = $api_url . '?' . http_build_query(['w' => 'tag', 'page' => $page, 'pagesize' => $page_size]); 124 $url_page = $api_url . '?' . http_build_query(['w' => 'tag', 'page' => $page, 'pagesize' => $page_size]);
125 - $data_page = http_get($url_page, ['charset' => 'UTF-8']); 125 + $data_page = curl_c($url_page);
126 if (isset($data_page['code']) && $data_page['code'] == 200) { 126 if (isset($data_page['code']) && $data_page['code'] == 200) {
127 $items = $data_page['data']['data'] ?? []; 127 $items = $data_page['data']['data'] ?? [];
128 128
@@ -132,6 +132,7 @@ class ProjectUpdate extends Command @@ -132,6 +132,7 @@ class ProjectUpdate extends Command
132 $keyword = $model->read(['title' => $item['name']], 'id'); 132 $keyword = $model->read(['title' => $item['name']], 'id');
133 if (!$keyword) { 133 if (!$keyword) {
134 try { 134 try {
  135 + $item['name'] = $this->special2str($item['name']);
135 $id = $model->addReturnId([ 136 $id = $model->addReturnId([
136 'project_id' => $project_id, 137 'project_id' => $project_id,
137 'title' => $item['name'], 138 'title' => $item['name'],
@@ -160,7 +161,7 @@ class ProjectUpdate extends Command @@ -160,7 +161,7 @@ class ProjectUpdate extends Command
160 } elseif ($api_type == 'website_info') { 161 } elseif ($api_type == 'website_info') {
161 //网站信息 162 //网站信息
162 $url = $api_url . '?' . http_build_query(['w' => 'website_info']); 163 $url = $api_url . '?' . http_build_query(['w' => 'website_info']);
163 - $data = http_get($url, ['charset' => 'UTF-8']); 164 + $data = curl_c($url);
164 if (isset($data['code']) && $data['code'] == 200) { 165 if (isset($data['code']) && $data['code'] == 200) {
165 $phones = $data['data']['phones'] ?? ''; 166 $phones = $data['data']['phones'] ?? '';
166 $emails = $data['data']['emails'] ?? ''; 167 $emails = $data['data']['emails'] ?? '';
@@ -212,14 +213,14 @@ class ProjectUpdate extends Command @@ -212,14 +213,14 @@ class ProjectUpdate extends Command
212 } elseif ($api_type == 'post') { 213 } elseif ($api_type == 'post') {
213 //产品 214 //产品
214 $url = $api_url . '?' . http_build_query(['w' => 'post', 'page' => 1, 'pagesize' => 0]); 215 $url = $api_url . '?' . http_build_query(['w' => 'post', 'page' => 1, 'pagesize' => 0]);
215 - $data = http_get($url, ['charset' => 'UTF-8']); 216 + $data = curl_c($url);
216 if (isset($data['code']) && $data['code'] == 200) { 217 if (isset($data['code']) && $data['code'] == 200) {
217 $count = $data['data']['count'] ?? 0; 218 $count = $data['data']['count'] ?? 0;
218 219
219 $total_page = ceil($count / $page_size); 220 $total_page = ceil($count / $page_size);
220 for ($page = 1; $page <= $total_page; $page++) { 221 for ($page = 1; $page <= $total_page; $page++) {
221 $url_page = $api_url . '?' . http_build_query(['w' => 'post', 'page' => $page, 'pagesize' => $page_size]); 222 $url_page = $api_url . '?' . http_build_query(['w' => 'post', 'page' => $page, 'pagesize' => $page_size]);
222 - $data_page = http_get($url_page, ['charset' => 'UTF-8']); 223 + $data_page = curl_c($url_page);
223 if (isset($data_page['code']) && $data_page['code'] == 200) { 224 if (isset($data_page['code']) && $data_page['code'] == 200) {
224 $items = $data_page['data']['data'] ?? []; 225 $items = $data_page['data']['data'] ?? [];
225 226
@@ -256,6 +257,7 @@ class ProjectUpdate extends Command @@ -256,6 +257,7 @@ class ProjectUpdate extends Command
256 } 257 }
257 } 258 }
258 try { 259 try {
  260 + $item['ttile'] = $this->special2str($item['ttile']);
259 $id = $model->addReturnId([ 261 $id = $model->addReturnId([
260 'project_id' => $project_id, 262 'project_id' => $project_id,
261 'title' => $item['ttile'], 263 'title' => $item['ttile'],
@@ -292,14 +294,14 @@ class ProjectUpdate extends Command @@ -292,14 +294,14 @@ class ProjectUpdate extends Command
292 } elseif ($api_type == 'news' || $api_type == 'blog') { 294 } elseif ($api_type == 'news' || $api_type == 'blog') {
293 //新闻或博客 295 //新闻或博客
294 $url = $api_url . '?' . http_build_query(['w' => $api_type, 'page' => 1, 'pagesize' => 0]); 296 $url = $api_url . '?' . http_build_query(['w' => $api_type, 'page' => 1, 'pagesize' => 0]);
295 - $data = http_get($url, ['charset' => 'UTF-8']); 297 + $data = curl_c($url);
296 if (isset($data['code']) && $data['code'] == 200) { 298 if (isset($data['code']) && $data['code'] == 200) {
297 $count = $data['data']['count'] ?? 0; 299 $count = $data['data']['count'] ?? 0;
298 300
299 $total_page = ceil($count / $page_size); 301 $total_page = ceil($count / $page_size);
300 for ($page = 1; $page <= $total_page; $page++) { 302 for ($page = 1; $page <= $total_page; $page++) {
301 $url_page = $api_url . '?' . http_build_query(['w' => $api_type, 'page' => $page, 'pagesize' => $page_size]); 303 $url_page = $api_url . '?' . http_build_query(['w' => $api_type, 'page' => $page, 'pagesize' => $page_size]);
302 - $data_page = http_get($url_page, ['charset' => 'UTF-8']); 304 + $data_page = curl_c($url_page);
303 if (isset($data_page['code']) && $data_page['code'] == 200) { 305 if (isset($data_page['code']) && $data_page['code'] == 200) {
304 $items = $data_page['data']['data'] ?? []; 306 $items = $data_page['data']['data'] ?? [];
305 307
@@ -315,6 +317,7 @@ class ProjectUpdate extends Command @@ -315,6 +317,7 @@ class ProjectUpdate extends Command
315 $news = $model->read(['name' => $item['ttile']], 'id'); 317 $news = $model->read(['name' => $item['ttile']], 'id');
316 if (!$news) { 318 if (!$news) {
317 try { 319 try {
  320 + $item['ttile'] = $this->special2str($item['ttile']);
318 $id = $model->addReturnId([ 321 $id = $model->addReturnId([
319 'project_id' => $project_id, 322 'project_id' => $project_id,
320 'name' => $item['ttile'], 323 'name' => $item['ttile'],
@@ -346,14 +349,14 @@ class ProjectUpdate extends Command @@ -346,14 +349,14 @@ class ProjectUpdate extends Command
346 } else { 349 } else {
347 //单页 350 //单页
348 $url = $api_url . '?' . http_build_query(['w' => 'page', 'page' => 1, 'pagesize' => 0]); 351 $url = $api_url . '?' . http_build_query(['w' => 'page', 'page' => 1, 'pagesize' => 0]);
349 - $data = http_get($url, ['charset' => 'UTF-8']); 352 + $data = curl_c($url);
350 if (isset($data['code']) && $data['code'] == 200) { 353 if (isset($data['code']) && $data['code'] == 200) {
351 $count = $data['data']['count'] ?? 0; 354 $count = $data['data']['count'] ?? 0;
352 355
353 $total_page = ceil($count / $page_size); 356 $total_page = ceil($count / $page_size);
354 for ($page = 1; $page <= $total_page; $page++) { 357 for ($page = 1; $page <= $total_page; $page++) {
355 $url_page = $api_url . '?' . http_build_query(['w' => 'page', 'page' => $page, 'pagesize' => $page_size]); 358 $url_page = $api_url . '?' . http_build_query(['w' => 'page', 'page' => $page, 'pagesize' => $page_size]);
356 - $data_page = http_get($url_page, ['charset' => 'UTF-8']); 359 + $data_page = curl_c($url_page);
357 if (isset($data_page['code']) && $data_page['code'] == 200) { 360 if (isset($data_page['code']) && $data_page['code'] == 200) {
358 $items = $data_page['data']['data'] ?? []; 361 $items = $data_page['data']['data'] ?? [];
359 362
@@ -364,6 +367,7 @@ class ProjectUpdate extends Command @@ -364,6 +367,7 @@ class ProjectUpdate extends Command
364 $custom = $model->read(['name' => $item['ttile']], 'id'); 367 $custom = $model->read(['name' => $item['ttile']], 'id');
365 if (!$custom) { 368 if (!$custom) {
366 try { 369 try {
  370 + $item['ttile'] = $this->special2str($item['ttile']);
367 $id = $model->addReturnId([ 371 $id = $model->addReturnId([
368 'project_id' => $project_id, 372 'project_id' => $project_id,
369 'name' => $item['ttile'], 373 'name' => $item['ttile'],
@@ -442,6 +446,7 @@ class ProjectUpdate extends Command @@ -442,6 +446,7 @@ class ProjectUpdate extends Command
442 $parent = $model->read(['pid' => $pid, 'title' => $item['name']], 'id'); 446 $parent = $model->read(['pid' => $pid, 'title' => $item['name']], 'id');
443 if (!$parent) { 447 if (!$parent) {
444 try { 448 try {
  449 + $item['name'] = $this->special2str($item['name']);
445 $parent_id = $model->addReturnId([ 450 $parent_id = $model->addReturnId([
446 'project_id' => $project_id, 451 'project_id' => $project_id,
447 'title' => $item['name'], 452 'title' => $item['name'],
@@ -477,4 +482,27 @@ class ProjectUpdate extends Command @@ -477,4 +482,27 @@ class ProjectUpdate extends Command
477 482
478 return []; 483 return [];
479 } 484 }
  485 +
  486 + //特殊字符转换
  487 + protected function special2str($str)
  488 + {
  489 + if (strpos($str, ';') === false) {
  490 + return $str;
  491 + }
  492 +
  493 + $list = [
  494 + '&lt;' => '<',
  495 + '&gt;' => '>',
  496 + '&amp;' => '&',
  497 + '&acute;' => '´',
  498 + '&quot;' => '“',
  499 + '&nbsp;' => ' '
  500 + ];
  501 +
  502 + foreach ($list as $k => $v) {
  503 + $str = str_replace($k, $v, $str);
  504 + }
  505 +
  506 + return $str;
  507 + }
480 } 508 }
@@ -108,6 +108,36 @@ if (!function_exists('http_get')) { @@ -108,6 +108,36 @@ if (!function_exists('http_get')) {
108 } 108 }
109 } 109 }
110 110
  111 +if (!function_exists('curl_c')) {
  112 + /**
  113 + * @param $url
  114 + * @return []
  115 + * @author Akun
  116 + * @date 2023/11/22 11:33
  117 + */
  118 + function curl_c($url){
  119 + $header = array(
  120 + 'Expect:',
  121 + 'Content-Type: application/json; charset=utf-8'
  122 + );
  123 + $ch = curl_init($url);
  124 + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  125 + curl_setopt($ch, CURLOPT_HEADER, false);
  126 + curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  127 + curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246');
  128 + curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  129 + curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
  130 + curl_setopt($ch, CURLOPT_TIMEOUT, 120);
  131 + curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
  132 + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  133 + curl_setopt($ch, CURLOPT_SSLVERSION, 'all');
  134 + curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
  135 + $content = curl_exec($ch);
  136 + curl_close($ch);
  137 + return json_decode($content, true);
  138 + }
  139 +}
  140 +
111 141
112 if (!function_exists('_get_child')) { 142 if (!function_exists('_get_child')) {
113 /** 143 /**