使用带有PHP和cURL的Azure Microsoft Translator API

我试图find一个简单的教程,了解如何使新的Azure翻译API与PHP和Curl一起使用。

有没有人有一个简单的函数,可以被称为执行一个string的翻译的示例代码?

我已经创build了我的用户帐户并注册了一个应用程序。

我正在处理这些例子,但我无法弄清楚如何使用它们作为一个简单的PHP函数。

http://wangpidong.blogspot.ca/2012/04/how-to-use-new-bing-translator-api-with.html

新的Bing API PHP示例不起作用

我知道这个问题已经过了几个月了,但是因为我今天正在处理这个问题,所以我想我会分享我的工作代码。 下面是一个简单的示例,介绍如何使用主帐户密钥和基本身份验证在Microsoft Translator V2 API中使用翻译方法。 您可以在这里获得您的主要帐户密钥。

// Prepare variables $text = urlencode('Hello world.'); $from = 'en'; $to = 'es'; // Prepare cURL command $key = 'YOUR_PRIMARY_ACCOUNT_KEY'; $ch = curl_init('https://api.datamarket.azure.com/Bing/MicrosoftTranslator/v1/Translate?Text=%27'.$text.'%27&From=%27'.$from.'%27&To=%27'.$to.'%27'); curl_setopt($ch, CURLOPT_USERPWD, $key.':'.$key); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Parse the XML response $result = curl_exec($ch); $result = explode('<d:Text m:type="Edm.String">', $result); $result = explode('</d:Text>', $result[1]); $result = $result[0]; echo $result; 

这应该返回:

 Hola mundo. 

有关GET参数的更多信息,请参阅MSDN文档 。

Microsoft DataMarket翻译器API将停止工作3/31/17: https ://datamarket.azure.com/dataset/bing/microsofttranslator

于是我做了一个新的PHP / cURL代码,这个代码将在未来工作:

 <?php // 4.01.17 AZURE Text Translation API 2017 - PHP Code Example - Cognitive Services with CURL http://www.aw6.de/azure/ // Get your key from: http://docs.microsofttranslator.com/text-translate.html // Put your parameters here: $azure_key = "KEY_1"; // !!! TODO: secret key here !!! $fromLanguage = "en"; // Translator Language Codes: https://msdn.microsoft.com/de-de/library/hh456380.aspx $toLanguage = "de"; $inputStr = "AZURE - The official documentation and examples for PHP are useless."; // and leave the rest of the code as it is ;-) // Get the AZURE token function getToken($azure_key) { $url = 'https://api.cognitive.microsoft.com/sts/v1.0/issueToken'; $ch = curl_init(); $data_string = json_encode('{body}'); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string), 'Ocp-Apim-Subscription-Key: ' . $azure_key ) ); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $strResponse = curl_exec($ch); curl_close($ch); return $strResponse; } // Request the translation function curlRequest($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, "Content-Type: text/xml"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, False); $curlResponse = curl_exec($ch); curl_close($ch); return $curlResponse; } // Get the translation $accessToken = getToken($azure_key); $params = "text=" . urlencode($inputStr) . "&to=" . $toLanguage . "&from=" . $fromLanguage . "&appId=Bearer+" . $accessToken; $translateUrl = "http://api.microsofttranslator.com/v2/Http.svc/Translate?$params"; $curlResponse = curlRequest($translateUrl); $translatedStr = simplexml_load_string($curlResponse); // Display the translated text on the web page: echo "<p>From " . $fromLanguage . ": " . $inputStr . "<br>"; echo "To " . $toLanguage . ": " . $translatedStr . "<br>"; echo date(r) . "<p>"; ?> 

新的Azure翻译器API的官方代码在这里: https : //github.com/MicrosoftTranslator/HTTP-Code-Samples/blob/master/PHP/PHPAzureToken.php

但是代码包含无用的额外参数$authHeader ,它从@Andreas发布的代码中移除。

似乎只有访问令牌方法已被修改在新的Azure API中。