|
@@ -31,11 +31,11 @@ class TranslateLogic extends BaseLogic |
|
@@ -31,11 +31,11 @@ class TranslateLogic extends BaseLogic |
|
31
|
* @time :2024/1/12 9:43
|
31
|
* @time :2024/1/12 9:43
|
|
32
|
*/
|
32
|
*/
|
|
33
|
public function getTranslateList(){
|
33
|
public function getTranslateList(){
|
|
|
|
34
|
+ $data = [];
|
|
34
|
if($this->param['url'] == 'All'){
|
35
|
if($this->param['url'] == 'All'){
|
|
35
|
$info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
|
36
|
$info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
|
|
36
|
- $data = [];
|
|
|
|
37
|
if(!empty($info) && !empty($info['data'])){
|
37
|
if(!empty($info) && !empty($info['data'])){
|
|
38
|
- $translateInfo = json_decode($info['data'],true);
|
38
|
+ $translateInfo = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
|
|
39
|
foreach ($translateInfo as $k => $v){
|
39
|
foreach ($translateInfo as $k => $v){
|
|
40
|
$data[] = [$k=>$v];
|
40
|
$data[] = [$k=>$v];
|
|
41
|
}
|
41
|
}
|
|
@@ -44,11 +44,10 @@ class TranslateLogic extends BaseLogic |
|
@@ -44,11 +44,10 @@ class TranslateLogic extends BaseLogic |
|
44
|
}
|
44
|
}
|
|
45
|
$url = $this->user['domain'].(($this->param['url'] != '/') ? $this->param['url'] : '');
|
45
|
$url = $this->user['domain'].(($this->param['url'] != '/') ? $this->param['url'] : '');
|
|
46
|
$languageInfo = $this->getLanguage($this->param['language_id']);
|
46
|
$languageInfo = $this->getLanguage($this->param['language_id']);
|
|
47
|
- $info = $this->model->read(['url'=>str_replace_url($this->param['url']),'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
|
47
|
+ $info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
|
|
48
|
//获取当前URl的所有文本内容
|
48
|
//获取当前URl的所有文本内容
|
|
49
|
$new_key = $this->getUrlRead($url);
|
49
|
$new_key = $this->getUrlRead($url);
|
|
50
|
if($info === false){
|
50
|
if($info === false){
|
|
51
|
- $data = [];
|
|
|
|
52
|
$translate_list = Translate::tran($new_key, $languageInfo['short']);
|
51
|
$translate_list = Translate::tran($new_key, $languageInfo['short']);
|
|
53
|
foreach ($new_key as $k=>$v){
|
52
|
foreach ($new_key as $k=>$v){
|
|
54
|
$data[] = [
|
53
|
$data[] = [
|
|
@@ -58,20 +57,27 @@ class TranslateLogic extends BaseLogic |
|
@@ -58,20 +57,27 @@ class TranslateLogic extends BaseLogic |
|
58
|
return $this->success($data);
|
57
|
return $this->success($data);
|
|
59
|
}
|
58
|
}
|
|
60
|
$old_key = [];//key值组成数据
|
59
|
$old_key = [];//key值组成数据
|
|
61
|
- $data = json_decode($info['data'],true);
|
|
|
|
62
|
- foreach ($data as $k => $v){
|
60
|
+ $data_read = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
|
|
|
|
61
|
+ foreach ($data_read as $k => $v){
|
|
63
|
$old_key[] = $k;
|
62
|
$old_key[] = $k;
|
|
|
|
63
|
+ $data[] = [$k => $v];
|
|
64
|
}
|
64
|
}
|
|
65
|
$arr2 = array_values(array_diff($new_key, $old_key));
|
65
|
$arr2 = array_values(array_diff($new_key, $old_key));
|
|
66
|
if(!empty($arr2)){
|
66
|
if(!empty($arr2)){
|
|
67
|
$translate_list = Translate::tran($arr2, $languageInfo['short']);
|
67
|
$translate_list = Translate::tran($arr2, $languageInfo['short']);
|
|
68
|
- foreach ($arr2 as $k1=>$v1){
|
68
|
+ if(count($arr2) == 1){
|
|
69
|
$data[] = [
|
69
|
$data[] = [
|
|
70
|
- trim($v1)=>$translate_list[$k1]
|
70
|
+ $arr2[0]=>$translate_list
|
|
71
|
];
|
71
|
];
|
|
|
|
72
|
+ }else{
|
|
|
|
73
|
+ foreach ($arr2 as $k => $v){
|
|
|
|
74
|
+ $data[] = [
|
|
|
|
75
|
+ trim($v)=>$translate_list[$k]
|
|
|
|
76
|
+ ];
|
|
|
|
77
|
+ }
|
|
72
|
}
|
78
|
}
|
|
73
|
}
|
79
|
}
|
|
74
|
- $this->success($data);
|
80
|
+ return $this->success($data);
|
|
75
|
}
|
81
|
}
|
|
76
|
|
82
|
|
|
77
|
/**
|
83
|
/**
|
|
@@ -86,7 +92,7 @@ class TranslateLogic extends BaseLogic |
|
@@ -86,7 +92,7 @@ class TranslateLogic extends BaseLogic |
|
86
|
$info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
|
92
|
$info = $this->model->read(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>$this->param['type']]);
|
|
87
|
$data = [];
|
93
|
$data = [];
|
|
88
|
if(!empty($info) && !empty($info['data'])){
|
94
|
if(!empty($info) && !empty($info['data'])){
|
|
89
|
- $translateInfo = json_decode($info['data'],true);
|
95
|
+ $translateInfo = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
|
|
90
|
foreach ($translateInfo as $k => $v){
|
96
|
foreach ($translateInfo as $k => $v){
|
|
91
|
$data[] = [$k=>$v];
|
97
|
$data[] = [$k=>$v];
|
|
92
|
}
|
98
|
}
|
|
@@ -105,11 +111,11 @@ class TranslateLogic extends BaseLogic |
|
@@ -105,11 +111,11 @@ class TranslateLogic extends BaseLogic |
|
105
|
}
|
111
|
}
|
|
106
|
return $this->success($data);
|
112
|
return $this->success($data);
|
|
107
|
}
|
113
|
}
|
|
108
|
- $new_list = $this->getUrlImageRead($this->param['url']);
|
114
|
+ $new_list = $this->getUrlImageRead($url);
|
|
109
|
$old_list = [];
|
115
|
$old_list = [];
|
|
110
|
- $data = json_decode($info['data'],true);
|
|
|
|
111
|
- foreach ($data as $k=>$v){
|
|
|
|
112
|
- $old_list[] = $v;
|
116
|
+ $data_read = json_decode($info['data'],JSON_UNESCAPED_UNICODE);
|
|
|
|
117
|
+ foreach ($data_read as $k=>$v){
|
|
|
|
118
|
+ $old_list[] = $k;
|
|
113
|
$data[] = [
|
119
|
$data[] = [
|
|
114
|
$k=>$v,
|
120
|
$k=>$v,
|
|
115
|
];
|
121
|
];
|
|
@@ -157,6 +163,9 @@ class TranslateLogic extends BaseLogic |
|
@@ -157,6 +163,9 @@ class TranslateLogic extends BaseLogic |
|
157
|
];
|
163
|
];
|
|
158
|
$context = stream_context_create($contextOptions);
|
164
|
$context = stream_context_create($contextOptions);
|
|
159
|
$sourceCode = file_get_contents($url, false, $context);
|
165
|
$sourceCode = file_get_contents($url, false, $context);
|
|
|
|
166
|
+ if(!$sourceCode){
|
|
|
|
167
|
+ $this->fail('当前url不存在');
|
|
|
|
168
|
+ }
|
|
160
|
// 过滤掉具有 "change-language-cont" 类的元素
|
169
|
// 过滤掉具有 "change-language-cont" 类的元素
|
|
161
|
$pattern = '/<div\b[^>]*\sclass=[\'"]([^\'"]*change-language-cont[^\'"]*)[\'"][^>]*>(.*?)<\/div>/is';
|
170
|
$pattern = '/<div\b[^>]*\sclass=[\'"]([^\'"]*change-language-cont[^\'"]*)[\'"][^>]*>(.*?)<\/div>/is';
|
|
162
|
$sourceCode = preg_replace($pattern, '', $sourceCode);
|
171
|
$sourceCode = preg_replace($pattern, '', $sourceCode);
|
|
@@ -172,19 +181,25 @@ class TranslateLogic extends BaseLogic |
|
@@ -172,19 +181,25 @@ class TranslateLogic extends BaseLogic |
|
172
|
$textContentArray = array_filter($matches[1], function($item) {
|
181
|
$textContentArray = array_filter($matches[1], function($item) {
|
|
173
|
return !empty(trim($item));
|
182
|
return !empty(trim($item));
|
|
174
|
});
|
183
|
});
|
|
|
|
184
|
+ // 过滤掉包含逗号加换行的内容
|
|
|
|
185
|
+ $textContentArray = array_filter($textContentArray, function($item) {
|
|
|
|
186
|
+ return strpos($item, ',') === false && strpos($item, PHP_EOL) === false;
|
|
|
|
187
|
+ });
|
|
175
|
$contentData = [];
|
188
|
$contentData = [];
|
|
176
|
foreach ($textContentArray as $v){
|
189
|
foreach ($textContentArray as $v){
|
|
177
|
$content = trim($v);
|
190
|
$content = trim($v);
|
|
178
|
$trimmedString = preg_replace('/\s+/', ' ', $content);
|
191
|
$trimmedString = preg_replace('/\s+/', ' ', $content);
|
|
179
|
$contentData[] = $trimmedString;
|
192
|
$contentData[] = $trimmedString;
|
|
180
|
}
|
193
|
}
|
|
181
|
- $contentData = array_values($contentData);
|
|
|
|
182
|
- $pattern = '/<meta\s+[^>]*name=[\'"](keywords|description)[\'"][^>]*content=[\'"]([^\'"]+)[\'"]/i'; // 匹配 name 为 "keywords" 或 "description" 的 meta 标签的正则表达式
|
194
|
+ $contentData = array_values($textContentArray);
|
|
|
|
195
|
+ $pattern = '/<meta\s+[^>]*name=[\'"](keywords|description)[\'"][^>]*content=[\'"]([^\'"]+)[\'"]>/i'; // 匹配 name 为 "keywords" 或 "description" 的 meta 标签的正则表达式
|
|
183
|
$matches = array();
|
196
|
$matches = array();
|
|
184
|
preg_match_all($pattern, $strippedContent, $matches);
|
197
|
preg_match_all($pattern, $strippedContent, $matches);
|
|
185
|
$metaData = array();
|
198
|
$metaData = array();
|
|
186
|
foreach ($matches[2] as $index => $content) {
|
199
|
foreach ($matches[2] as $index => $content) {
|
|
187
|
- $metaData[] = $content;
|
200
|
+ if(!empty(trim($content))){
|
|
|
|
201
|
+ $metaData[] = $content;
|
|
|
|
202
|
+ }
|
|
188
|
}
|
203
|
}
|
|
189
|
$data = array_merge($metaData, $contentData);
|
204
|
$data = array_merge($metaData, $contentData);
|
|
190
|
return $data;
|
205
|
return $data;
|
|
@@ -239,10 +254,10 @@ class TranslateLogic extends BaseLogic |
|
@@ -239,10 +254,10 @@ class TranslateLogic extends BaseLogic |
|
239
|
'language_id'=>$this->param['language_id'],
|
254
|
'language_id'=>$this->param['language_id'],
|
|
240
|
'alias'=>$this->param['alias'],
|
255
|
'alias'=>$this->param['alias'],
|
|
241
|
];
|
256
|
];
|
|
242
|
- $param['data'] = json_encode($this->param['data'],true);
|
257
|
+ $param['data'] = json_encode($this->param['data'],JSON_UNESCAPED_UNICODE);
|
|
243
|
$this->model->add($param);
|
258
|
$this->model->add($param);
|
|
244
|
}else{
|
259
|
}else{
|
|
245
|
- $data = json_encode($this->param['data'],true);
|
260
|
+ $data = json_encode($this->param['data'],JSON_UNESCAPED_UNICODE);
|
|
246
|
$this->model->edit(['data'=>$data],['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>$this->param['type']]);
|
261
|
$this->model->edit(['data'=>$data],['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>$this->param['type']]);
|
|
247
|
}
|
262
|
}
|
|
248
|
// }catch (\Exception $e){
|
263
|
// }catch (\Exception $e){
|