2013-04-05 80 views
1

我使用如下所示的函數translate。在文本中有很多
標籤,並且在翻譯之後它們被更改爲\ u003cbr /。<br />必須使用谷歌翻譯而不是使用 u003cbr/

例如: Super Preis - Leistungsverhältnis。

如果沒有!

Super prijs - 。蓋爾德\ u003cbr/\ u003eü附件\ u003cbr/\ u003e

問題:怎樣才能防止文本
標籤不改變,翻譯爲
標籤後停留。

function translate($text, $from = 'de', $to = 'nl'){ 
$texto_traducri = urlencode($text); 
$query = "http://translate.google.nl/translate_a/t?client=t&text=$texto_traducri%0A%0A&hl=$from&sl=$from&tl=$to&multires=1&prev=enter&oc=5&ssel=3&tsel=6&sc=1"; 
$response = file_get_contents(
    $query, 
    null, 
    stream_context_create(
     array(
      'http'=>array(
      'method'=>"GET", 
      'header'=>"Referer: http://translate.google.nl/\r\n" 
      ) 
     ) 
    ) 
); 
$p_separador = strpos($response,'","'); 
$p_separador = strpos($response,"]]"); 
$s_previo = substr($response,3,($p_separador)); 
$a_previo = explode("],[",$s_previo); 
$txt_sum = ''; 
    foreach($a_previo as $s_cadenaparcial){ 
     $s_cadenaparcial = str_replace("]", "", $s_cadenaparcial); 
     $s_cadenaparcial = str_replace("[", "", $s_cadenaparcial); 
     $a_cadena = explode('","',$s_cadenaparcial); 
     $txt_sum.=substr($a_cadena[0],1); 
     } 
    $tagresult = $txt_sum; 

$ tagresult = htmlspecialchars_decode($ tagresult);

return $tagresult; 
} 

回答

0

\u003c\u003e代表<>的Unicode值。

您可以簡單地將它們轉換回普通字符。

這裏是如何做到這一點的例子:

<? 
    function uconverter($matches) { 
     return html_entity_decode('&#' . hexdec($matches[1]) . ';', ENT_COMPAT, 'UTF-8'); 
    } 
    function decode_uchars($str) { 
     return preg_replace_callback('/\\\\u([0-9A-Fa-f]{4})/', uconverter, $str); 
    } 


    $in = 'Super prijs - . Geld \u003cbr /\u003e U ons \u003cbr /\u003e'; 
    $out = decode_uchars($in); // Super prijs - . Geld <br /> U ons <br /> 

    echo $out; 
?> 
+0

將測試它的明天,這是一個勞累的一天。不管怎麼說,還是要謝謝你。 – user1575807 2013-04-05 19:28:35

+0

非常感謝安德斯! – user1575807 2013-04-06 07:55:10

相關問題