PHP - 使用SimpleXml

时间:2016-02-12 22:27:55

标签: php xml encoding utf-8 google-translate

我正在努力解决PHP应用中的编码问题:

  1. 读取XML文件并根据某些规则对其进行解析
  2. 调用Google Translate API并使用结果填充a 稍后用于在浏览器上显示数据的数据库(即 部分运作良好)
  3. 将该数据保存到XML文件中(它可以保存,但有些错误 用编码)。
  4. 数据来自以UTF-8和浏览器编码的Google翻译,前提是您拥有正确的标题,无论语言是什么,它都能正常显示。

    以下是Google翻译功能:

        function mt($text, $lang) {
    
        $url = 'https://www.googleapis.com/language/translate/v2?key=' .  $apiKey . '&q=' . rawurlencode($text) . '&source=en&target=' . $lang;
        $handle = curl_init($url);
        curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, false);
        $response = curl_exec($handle);
        $responseDecoded = json_decode($response, JSON_UNESCAPED_UNICODE);
        $responseCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);      
    
        curl_close($handle);
    
        if($responseCode != 200) {
            $resultxt = 'not200result';
          }
        else {
            $resultxt = $responseDecoded['data']['translations'][0]['translatedText'];
        }
        return $resultxt;
    }
    

    我使用Simplexml加载XML文件,修改其内容并使用asXml()保存。 生成的XML文件使用UTF-8以外的其他代码进行编码,如下所示:

    <value>&#x3088;&#x3046;&#x3053;&#x305D;&#xFF05;0 ST&#x6570;&#x5B66;</value>
    

    这里是将转换归类到XML节点并保存它的代码。

    $xml=simplexml_load_file('myfile.xml'); //Load source XML file
    $xml->addAttribute('encoding', 'UTF-8');
    $xmlFile = 'translation.xml'; //File that will be saved 
    //Here I have a call to the MT function above and get it to the XML file at face value. 
    $xml->asXML($xmlFile) //save translated XML file
    

    我尝试过使用htmentities()并使用utf8_encode()和utf8_decode()进行播放,但无法使其正常工作。

    我已尝试过所有内容,并查看了许多其他帖子。对于我的生活,我无法解决这个问题。任何帮助表示赞赏。

0 个答案:

没有答案