首页站内杂志技术文摘
文章内容页

当一回雷锋容易,持续发扬雷锋精神就难了(百度翻译接口php写法)

  • 作者:雨祺
  • 来源: 原创
  • 发表于2024-09-20 11:18:20
  • 被阅读0
  • 当一回雷锋容易,持续发扬雷锋精神就难了(百度翻译接口php写法),下面我就4414站长的小小白站长们,提供百度接口PHP写法的例子。声明我这个是基于应该算是大众的了。首先不清楚您的CMS有没有自带的memcached与redis。如果有请把相关代码删除掉。另外就是post字段那里请根据自己的CMS做好变量过滤处理。不扯淡了,直接上干货,代码如下:
    1. <?php 
    2. //内存缓存开始(若您的CMS有给予删除此区间的代码) 
    3. $memcache = null; $redis = null;  
    4. if (class_exists('Memcached')){ 
    5. $memcache = new Memcached();    
    6. $memcache->addServer('127.0.0.1', 11211); 
    7. if (class_exists('Redis')){ 
    8. $redis = new Redis();                  
    9. $redis->connect('127.0.0.1', 6379);  
    10. register_shutdown_function(function() use ($memcache, $redis) {   
    11. if (isset($memcache)) {   
    12. $memcache->quit();   
    13. }   
    14. if (isset($redis)) {   
    15. $redis->close();   
    16. }   
    17. }); 
    18. //内存缓存结束(若您的CMS有给予删除此区间的代码) 
    19. function curlRequest($url, $method = 'GET', $data = [], $headers = []) {   
    20. $ch = curl_init($url);   
    21. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);   
    22. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);   
    23. curl_setopt($ch, CURLOPT_MAXREDIRS, 10);   
    24. curl_setopt($ch, CURLOPT_TIMEOUT, 30);   
    25. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  
    26. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);  
    27. if ($method === 'POST') {   
    28. curl_setopt($ch, CURLOPT_POST, true);   
    29. if (is_array($data) || is_object($data)) {   
    30. curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));   
    31. else {   
    32. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);   
    33. }   
    34. } elseif ($method !== 'GET') {   
    35. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);   
    36. if (!empty($data)) {   
    37. curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));   
    38. }   
    39. }     
    40. if (!empty($headers)) {   
    41. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);   
    42. }      
    43. $response = curl_exec($ch);   
    44. $error = curl_error($ch);    
    45. curl_close($ch);   
    46. if ($error) {   
    47. throw new Exception("CURL Error: " . $error);   
    48. }    
    49. return $response;   
    50. $baiduappid = ''//到百度申请 
    51. $baiduapikey = '';//应用的API Key; 
    52. $baidusecretkey = ''
    53. $postData = ['grant_type' =>'client_credentials','client_id' =>$baiduapikey,'client_secret' =>$baidusecretkey];  
    54. $headers = ['Content-Type: application/json','Accept: application/json']; 
    55. $cacheKey = md5($public_r['add_pcurl']).'chatbaidufanyi_access_token_' .$baiduappid; 
    56. $ret= $memcache->get($cacheKey);//若您的CMS有请改成memcache获取缓存的方式 
    57. if ($ret== false) {         
    58. $ret = json_decode(curlRequest("https://aip.baidubce.com/oauth/2.0/token"'POST', $postData, $headers),TRUE);  
    59. $memcache->set($cacheKey,$ret, 3600*24*28);//若您的CMS有请改成memcache保存缓存的方式 
    60. $access_token_baidu =$ret['access_token']; 
    61. $postDatafy= [ 
    62. 'from' =>'auto'
    63. 'to' => $_POST['category'],//目标语种方向(前端POST传过来的)PS:请根据自己的CMS做好变量过滤处理,比如帝国的过滤函数RepPostStr,那就可以改为RepPostStr($_POST['category']) 
    64. 'q' =>$_POST['content'],//请求翻译文本(前端POST传过来的)PS:请根据自己的CMS做好变量过滤处理,比如帝国的过滤函数RepPostStr,那就可以改为RepPostStr($_POST['content']) 
    65. ]; 
    66. $baidufyres =curlRequest("https://aip.baidubce.com/rpc/2.0/mt/texttrans/v1?access_token=".$access_token_baidu,'POST', json_encode($postDatafy));//翻译接口 
    67. $baidufy_array = json_decode($baidufyres, true); 
    68. if(isset($baidufy_array['error_code'])){ 
    69. $date= array('result'=>$baidufy_array['error_msg'],'code'=>0,); 
    70. echo json_encode($date); 
    71. exit;         
    72. $date= array('result'=>$baidufy_array['result']['trans_result'][0],'code'=>1,); 
    73. echo json_encode($date); 
    api后端接口就写好了哦,那我们命名为baidufanyi.php,其实百度所有的接口开发流程就是这样的,先获取百度独有的token(这里应该设为缓存,好像1个月内是不过期的,减少点curl时间的花销),而后在请求相关的接口。好人做到底,那顺便也把前端也写个例子,代码如下:
    1. var category = $('#category').val();//这是用户填写的翻译的语言方向,如果只翻译为英语。那可以为固定值 
    2. var content = $.trim($("textarea[name=content]").val());//这是用户填写的需要翻译的内容 
    3. if (category== "" || category == null) { 
    4. layer.msg('请选择语言类型', {icon: 5, time: 2000, area: '200px', type: 0, anim: 6,}); 
    5. return false
    6. }         
    7. if (content== "" || content == null) { 
    8. layer.msg('请输入翻译内容', {icon: 5, time: 2000, area: '200px', type: 0, anim: 6,}); 
    9. return false
    10. $.ajax({ 
    11. url: 'baidufanyi.php'
    12. type: 'POST'
    13. data: {category: category,content: content}, 
    14. dataType : 'json'
    15. success: function(json) { 
    16. $("#fyresult").html(json.result.dst);//json.result.dst这个就是后端返回的翻译最终结果json.result.dst 
    17. }, 
    18. }); 
    【审核人:站长】

        标题:当一回雷锋容易,持续发扬雷锋精神就难了(百度翻译接口php写法)

        本文链接:https://www.meiweny.cn/zazhi/zhongwangjiaocheng/1125.html

        赞一下

        深度阅读

        • 您也可以注册成为美文苑的作者,发表您的原创作品、分享您的心情!

        阅读记录

          关注美文苑