3v4l.org

run code in 300+ PHP versions simultaneously
<?php class GoogleTranslate { /** * Retrieves the translation of a text * * @param string $source * Original language of the text on notation xx. For example: es, en, it, fr... * @param string $target * Language to which you want to translate the text in format xx. For example: es, en, it, fr... * @param string $text * Text that you want to translate * * @return string a simple string with the translation of the text in the target language */ public static function translate($source, $target, $text) { // Request translation $response = self::requestTranslation($source, $target, $text); // Get translation text // $response = self::getStringBetween("onmouseout=\"this.style.backgroundColor='#fff'\">", "</span></div>", strval($response)); // Clean translation $translation = self::getSentencesFromJSON($response); return $translation; } /** * Internal function to make the request to the translator service * * @internal * * @param string $source * Original language taken from the 'translate' function * @param string $target * Target language taken from the ' translate' function * @param string $text * Text to translate taken from the 'translate' function * * @return object[] The response of the translation service in JSON format */ protected static function requestTranslation($source, $target, $text) { // Google translate URL $url = "https://translate.google.com/translate_a/single?client=at&dt=t&dt=ld&dt=qca&dt=rm&dt=bd&dj=1&hl=es-ES&ie=UTF-8&oe=UTF-8&inputm=2&otf=2&iid=1dd3b944-fa62-4b55-b330-74909a99969e"; $fields = array( 'sl' => urlencode($source), 'tl' => urlencode($target), 'q' => urlencode($text) ); if(strlen($fields['q'])>=5000) throw new \Exception("Maximum number of characters exceeded: 5000"); // URL-ify the data for the POST $fields_string = ""; foreach ($fields as $key => $value) { $fields_string .= $key . '=' . $value . '&'; } rtrim($fields_string, '&'); // Open connection $ch = curl_init(); // Set the url, number of POST vars, POST data curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, count($fields)); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_USERAGENT, 'AndroidTranslate/5.3.0.RC02.130475354-53000263 5.1 phone TRANSLATE_OPM5_TEST_1'); // Execute post $result = curl_exec($ch); // Close connection curl_close($ch); return $result; } /** * Dump of the JSON's response in an array * * @param string $json * The JSON object returned by the request function * * @return string A single string with the translation */ protected static function getSentencesFromJSON($json) { $sentencesArray = json_decode($json, true); $sentences = ""; foreach ($sentencesArray["sentences"] as $s) { $sentences .= isset($s["trans"]) ? $s["trans"] : ''; } return $sentences; } } echo (new GoogleTranslate())->translate("en","vi","hello");
Output for 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.28, 8.4.1 - 8.4.16, 8.5.0 - 8.5.1
Fatal error: Uncaught Error: Call to undefined function curl_init() in /in/N57K6:69 Stack trace: #0 /in/N57K6(20): GoogleTranslate::requestTranslation('en', 'vi', 'hello') #1 /in/N57K6(110): GoogleTranslate::translate('en', 'vi', 'hello') #2 {main} thrown in /in/N57K6 on line 69
Process exited with code 255.
Output for 5.6.0 - 5.6.40
Fatal error: Call to undefined function curl_init() in /in/N57K6 on line 69
Process exited with code 255.

preferences:
62.08 ms | 407 KiB | 5 Q