|
...
|
...
|
@@ -3,8 +3,12 @@ |
|
|
|
namespace App\Http\Controllers\Bside\Setting;
|
|
|
|
|
|
|
|
use App\Enums\Common\Code;
|
|
|
|
use App\Helper\Translate;
|
|
|
|
use App\Http\Controllers\Bside\BaseController;
|
|
|
|
use App\Http\Logic\Bside\Setting\ProofreadingLogic;
|
|
|
|
use App\Models\WebSetting\Proofreading;
|
|
|
|
use App\Models\WebSetting\WebSettingCountry;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
|
|
class ProofreadingController extends BaseController
|
|
|
|
{
|
|
...
|
...
|
@@ -16,18 +20,88 @@ class ProofreadingController extends BaseController |
|
|
|
* @method :post
|
|
|
|
* @time :2023/6/12 10:52
|
|
|
|
*/
|
|
|
|
public function lists(ProofreadingLogic $proofreadingLogic){
|
|
|
|
//默认显示语言为英语
|
|
|
|
if(!isset($this->map['language_id']) || empty($this->map['language_id'])){
|
|
|
|
$this->map['language_id'] = $this::LANGUAGE_ID;
|
|
|
|
public function lists(){
|
|
|
|
//获取语种信息
|
|
|
|
$webSettingCountryModel = new WebSettingCountry();
|
|
|
|
$countryInfo = $webSettingCountryModel->read(['id'=>$this->param['language_id']]);
|
|
|
|
//获取当前链接和语种的校队列表
|
|
|
|
$proofreadingModel = new Proofreading();
|
|
|
|
$list = $proofreadingModel->list(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>1],'created_at',['text','translate']);
|
|
|
|
//获取当前URl的所有文本内容
|
|
|
|
$new_list = $this->getUrlRead($this->param['url']);
|
|
|
|
if(empty($list)){
|
|
|
|
$data = [];
|
|
|
|
$translate_list = Translate::tran($new_list, $countryInfo['alias']);
|
|
|
|
foreach ($new_list as $k=>$v){
|
|
|
|
$data[] = [
|
|
|
|
'text'=>trim($v),
|
|
|
|
'translate'=>$translate_list[$k],
|
|
|
|
];
|
|
|
|
}
|
|
|
|
$lists = $proofreadingLogic->proofreadingList($this->map,$this->page,$this->row);
|
|
|
|
if(!empty($lists['list']) && ($this->param['type'] == $this::TYPE_IMAGE)){
|
|
|
|
foreach ($lists['list'] as $k => $v){
|
|
|
|
$lists['list'][$k]['image_link'] = getImageUrl($v['translate']);
|
|
|
|
return $this->response('success',Code::SUCCESS,$data);
|
|
|
|
}
|
|
|
|
$data = [];//返回数据
|
|
|
|
$old_list = [];
|
|
|
|
foreach ($list as $v){
|
|
|
|
$old_list[] = $v['text'];
|
|
|
|
$data[] = [
|
|
|
|
'text'=>$v['text'],
|
|
|
|
'translate'=>$v['translate'],
|
|
|
|
];
|
|
|
|
}
|
|
|
|
$this->response('success',Code::SUCCESS,$lists);
|
|
|
|
$arr2 = array_values(array_diff($new_list, $old_list));
|
|
|
|
if(!empty($arr2)){
|
|
|
|
$translate_list = Translate::tran($arr2, $countryInfo['alias']);
|
|
|
|
foreach ($arr2 as $k1=>$v1){
|
|
|
|
$data[] = [
|
|
|
|
'text'=>$v1,
|
|
|
|
'translate'=>$translate_list[$k1]
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$this->response('success',Code::SUCCESS,$data);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :获取图片列表
|
|
|
|
* @name :imageList
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2023/11/23 17:29
|
|
|
|
*/
|
|
|
|
public function imageList(){
|
|
|
|
$proofreadingModel = new Proofreading();
|
|
|
|
$list = $proofreadingModel->list(['url'=>$this->param['url'],'language_id'=>$this->param['language_id'],'type'=>2],'created_at',['text','translate']);
|
|
|
|
if(empty($list)){
|
|
|
|
$new_list = $this->getUrlImageRead($this->param['url']);
|
|
|
|
foreach ($new_list as $k=>$v){
|
|
|
|
$data[] = [
|
|
|
|
'text'=>$v,
|
|
|
|
'translate'=>$v,
|
|
|
|
];
|
|
|
|
}
|
|
|
|
return $this->response('success',Code::SUCCESS,$data);
|
|
|
|
}
|
|
|
|
$new_list = $this->getUrlImageRead($this->param['url']);
|
|
|
|
$data = [];//返回数据
|
|
|
|
$old_list = [];
|
|
|
|
foreach ($list as $v){
|
|
|
|
$old_list[] = $v['text'];
|
|
|
|
$data[] = [
|
|
|
|
'text'=>$v['text'],
|
|
|
|
'translate'=>$v['translate'],
|
|
|
|
];
|
|
|
|
}
|
|
|
|
$arr2 = array_values(array_diff($new_list, $old_list));
|
|
|
|
if(!empty($arr2)){
|
|
|
|
foreach ($arr2 as $v1){
|
|
|
|
$data[] = [
|
|
|
|
'text'=>$v1,
|
|
|
|
'translate'=>$v1
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$this->response('success',Code::SUCCESS,$data);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
...
|
...
|
@@ -36,8 +110,71 @@ class ProofreadingController extends BaseController |
|
|
|
* @method :post
|
|
|
|
* @time :2023/6/12 10:52
|
|
|
|
*/
|
|
|
|
public function save(ProofreadingLogic $proofreadingLogic){
|
|
|
|
$proofreadingLogic->proofreadingSave();
|
|
|
|
public function save(){
|
|
|
|
//清除以前的翻译校队数据,重新添加
|
|
|
|
$param = [
|
|
|
|
'type'=>1,
|
|
|
|
'project_id'=>$this->user['project_id'],
|
|
|
|
'url'=>$this->param['url'],
|
|
|
|
'language_id'=>$this->param['language_id'],
|
|
|
|
'alias'=>$this->param['alias'],
|
|
|
|
'created_at'=>date('Y-m-d H:i:s'),
|
|
|
|
'updated_at'=>date('Y-m-d H:i:s')
|
|
|
|
];
|
|
|
|
$proofreadingModel = new Proofreading();
|
|
|
|
DB::beginTransaction();
|
|
|
|
try {
|
|
|
|
$proofreadingModel->del(['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>1]);
|
|
|
|
//删除成功后,重新添加
|
|
|
|
$save_data = [];
|
|
|
|
foreach ($this->param['data'] as $k => $v){
|
|
|
|
$param['text'] = $v['text'];
|
|
|
|
$param['translate'] = $v['translate'];
|
|
|
|
$save_data[] = $param;
|
|
|
|
}
|
|
|
|
$proofreadingModel->insert($save_data);
|
|
|
|
DB::commit();
|
|
|
|
}catch (\Exception $e){
|
|
|
|
DB::rollBack();
|
|
|
|
$this->fail('系统错误请联系管理员');
|
|
|
|
}
|
|
|
|
$this->response('success');
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @name :(新增/更新多语言)save
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2023/6/12 10:52
|
|
|
|
*/
|
|
|
|
public function saveImage(){
|
|
|
|
//清除以前的翻译校队数据,重新添加
|
|
|
|
$param = [
|
|
|
|
'type'=>2,
|
|
|
|
'project_id'=>$this->user['project_id'],
|
|
|
|
'url'=>$this->param['url'],
|
|
|
|
'language_id'=>$this->param['language_id'],
|
|
|
|
'alias'=>$this->param['alias'],
|
|
|
|
'created_at'=>date('Y-m-d H:i:s'),
|
|
|
|
'updated_at'=>date('Y-m-d H:i:s')
|
|
|
|
];
|
|
|
|
$proofreadingModel = new Proofreading();
|
|
|
|
// DB::beginTransaction();
|
|
|
|
// try {
|
|
|
|
$proofreadingModel->del(['language_id'=>$this->param['language_id'],'url'=>$this->param['url'],'type'=>2]);
|
|
|
|
//删除成功后,重新添加
|
|
|
|
$save_data = [];
|
|
|
|
foreach ($this->param['data'] as $k => $v){
|
|
|
|
$param['text'] = $v['text'];
|
|
|
|
$param['translate'] = $v['translate'];
|
|
|
|
$save_data[] = $param;
|
|
|
|
}
|
|
|
|
$proofreadingModel->insert($save_data);
|
|
|
|
// DB::commit();
|
|
|
|
// }catch (\Exception $e){
|
|
|
|
// DB::rollBack();
|
|
|
|
// $this->fail('系统错误请联系管理员');
|
|
|
|
// }
|
|
|
|
$this->response('success');
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -60,8 +197,68 @@ class ProofreadingController extends BaseController |
|
|
|
* @time :2023/11/22 10:02
|
|
|
|
*/
|
|
|
|
public function getUrlRead($url){
|
|
|
|
$sourceCode = file_get_contents($url);
|
|
|
|
$strippedContent = strip_tags($sourceCode); // 删除所有HTML标签
|
|
|
|
var_dump($strippedContent);
|
|
|
|
$contextOptions = [
|
|
|
|
'ssl' => [
|
|
|
|
'verify_peer' => false,
|
|
|
|
'verify_peer_name' => false,
|
|
|
|
],
|
|
|
|
];
|
|
|
|
$context = stream_context_create($contextOptions);
|
|
|
|
$sourceCode = file_get_contents($url, false, $context);
|
|
|
|
$pattern = '/<style\b[^>]*>(.*?)<\/style>/s'; // 定义匹配`<style>`标签及其内容的正则表达式
|
|
|
|
$strippedContent = preg_replace($pattern, '', $sourceCode); // 删除`<style>`标签及其内容
|
|
|
|
$pattern = '/<script\b[^>]*>(.*?)<\/script>/s'; // 定义匹配`<script>`标签及其内容的正则表达式
|
|
|
|
$strippedContent = preg_replace($pattern, '', $strippedContent); // 删除`<script>`标签及其内容
|
|
|
|
$pattern = '/<link\b[^>]*>/'; // 定义匹配 `<link>` 标签的正则表达式
|
|
|
|
$strippedContent = preg_replace($pattern, '', $strippedContent); // 删除 `<link>` 标签
|
|
|
|
$pattern = '/<footer\b[^>]*>(.*?)<\/footer>/s'; // 定义匹配`<script>`标签及其内容的正则表达式
|
|
|
|
$strippedContent = preg_replace($pattern, '', $strippedContent); // 删除`<script>`标签及其内容
|
|
|
|
$pattern = '/>([^<]+)</'; // 定义匹配中间内容不是标签的正则表达式
|
|
|
|
$matches = array();
|
|
|
|
preg_match_all($pattern, $strippedContent, $matches);
|
|
|
|
$textContentArray = array_filter($matches[1], function($item) {
|
|
|
|
return !empty(trim($item));
|
|
|
|
});
|
|
|
|
$data = [];
|
|
|
|
foreach ($textContentArray as $v){
|
|
|
|
$content = trim($v);
|
|
|
|
$trimmedString = preg_replace('/\s+/', ' ', $content);
|
|
|
|
$data[] = $trimmedString;
|
|
|
|
}
|
|
|
|
$data = array_values($data);
|
|
|
|
$uniqueArray = array_unique($data);
|
|
|
|
$data = array_values($uniqueArray);
|
|
|
|
return $data;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @remark :获取Url内容
|
|
|
|
* @name :getUrlRead
|
|
|
|
* @author :lyh
|
|
|
|
* @method :post
|
|
|
|
* @time :2023/11/22 10:02
|
|
|
|
*/
|
|
|
|
public function getUrlImageRead($url){
|
|
|
|
$contextOptions = [
|
|
|
|
'ssl' => [
|
|
|
|
'verify_peer' => false,
|
|
|
|
'verify_peer_name' => false,
|
|
|
|
],
|
|
|
|
];
|
|
|
|
$pattern = '/<img.*?src="(.*?)".*?>/i';
|
|
|
|
$matches = array();
|
|
|
|
$context = stream_context_create($contextOptions);
|
|
|
|
$sourceCode = file_get_contents($url, false, $context);
|
|
|
|
preg_match_all($pattern, $sourceCode, $matches);
|
|
|
|
$textContentArray = $matches[1];
|
|
|
|
$data = [];
|
|
|
|
foreach ($textContentArray as $v){
|
|
|
|
if(!empty($v)){
|
|
|
|
$data[] = $v;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$uniqueArray = array_unique($data);
|
|
|
|
$data = array_values($uniqueArray);
|
|
|
|
return $data;
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|