繁体   English   中英

PHP cURL与Linux cURL

[英]PHP cURL vs Linux cURL

我试图从Linux终端cURL读取Google翻译数据:

curl -i --user-agent "" -d "sl=en" -d "tl=sk" --data-urlencode "text=hi" https://translate.google.com

它返回了整个页面,在这里我可以看到翻译结果。 结果在一个HTML元素中。 但是,当我尝试使用PHP的cURL进行测试时,它没有输出相同的HTML,因此无法找到翻译结果。

$data = [
    "sl" => "en",
    "tl" => "sk",
    "text" => urlencode("hi");
];

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL, "https://translate.google.com");
curl_setopt($ch,CURLOPT_POST, count($data));
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
curl_setopt($ch,CURLOPT_HEADER, true);
curl_setopt($ch,CURLOPT_USERAGENT, "");


curl_exec($ch);

谢谢您的帮助,如何在PHP中返回与Linux cURL相同的结果。

使用$response = curl_exec($ch);

        $data = [
            "sl" => "en",
            "tl" => "sk",
            "text" => urlencode("hi")
        ];

        $ch = curl_init();

        curl_setopt($ch,CURLOPT_URL, "https://translate.google.com");
        curl_setopt($ch,CURLOPT_POST, true);
        curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch,CURLOPT_HEADER, true);
        curl_setopt($ch,CURLOPT_USERAGENT, "");


        $respond = curl_exec($ch);

        echo $respond;

        curl_close($ch);

如果您只是在寻找翻译结果,那么您所要做的就是使用Google翻译API,并且使用此API非常容易。

http://translate.google.com/translate_a/t?client=t&text=Hello&hl=en&sl=en&tl=sk&multires=1&otf=2&pc=1&ssel=0&tsel=0&sc=1

此API将为您返回一个txt文件,您可以在PHP中阅读该文件,并且可以从那里获取翻译结果。

如果您查看translate.google.com的源代码,则可以在此处找到:

f.src=c;

c是javascript的来源。 现在, c隐藏在该源代码中,这很难理解,可能要花费很多时间。 google.translate.com返回的数据显然是通过Ajax请求发送的,该请求可能在其他无法直接查看的javascript文件中,可能为f.src=c; 否则可能是其他。 因此,页面上没有直接结果或翻译,translate.google.com,因此,PHP的卷曲无法为您提供该页面的翻译,因为该页面上的翻译是通过其他位置的ajax请求(而其他位置是我上面提到的google API),该页面上没有实际的翻译内容,您可以将其直接读取为字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM