2010-08-16 6 views
2

html 태그 사이에 문자열을 추출하고 google api를 사용하여 다른 언어로 변환하고 html 태그로 문자열을 추가하려고합니다. 예를 들어PHP에서 html 태그 사이의 문자열 추출

, 내가 문자열을 추출 할

<b>This is an example</b> 

"이것은 예입니다"및 기타 언어로 변환 한 후 다시 굵은 태그 문자열을 추가합니다.

누구든지이 작업을 진행할 수 있습니까?

감사 레카

+0

좀 더 컨텍스트를 제공해야합니다. 이 문자열은 어디에 표시됩니까? – Artefacto

+0

본 적이 있습니까? http://code.google.com/apis/ajax/playground/?exp=language#translate –

답변

2

Here's a working example 다음은 Google API를 사용하여 서버 측을 번역 한 것입니다. 이 함수는 문자열을 입력으로 사용하고 변환하기 전에 문자열을 HTML 태그에서 제거합니다.

언어는 인수로 전달됩니다.

<?php 
// This function translates a string $source written in the $fromLang languages to the $toLang language. 
function translateTexts($source, $fromLang, $toLang) 
{ 

    /* Language choices: 'AFRIKAANS' : 'af', 'ALBANIAN' : 'sq', 'AMHARIC' : 'am', 'ARABIC' : 'ar', 'ARMENIAN' : 'hy', 'AZERBAIJANI' : 'az', 'BASQUE' : 'eu', 'BELARUSIAN' : 'be', 'BENGALI' : 'bn', 'BIHARI' : 'bh', 'BRETON' : 'br', 'BULGARIAN' : 'bg', 'BURMESE' : 'my', 'CATALAN' : 'ca', 'CHEROKEE' : 'chr', 'CHINESE' : 'zh', 'CHINESE_SIMPLIFIED' : 'zh-CN', 'CHINESE_TRADITIONAL' : 'zh-TW', 'CORSICAN' : 'co', 'CROATIAN' : 'hr', 'CZECH' : 'cs', 'DANISH' : 'da', 'DHIVEHI' : 'dv', 'DUTCH': 'nl', 'ENGLISH' : 'en', 'ESPERANTO' : 'eo', 'ESTONIAN' : 'et', 'FAROESE' : 'fo', 'FILIPINO' : 'tl', 'FINNISH' : 'fi', 'FRENCH' : 'fr', 'FRISIAN' : 'fy', 'GALICIAN' : 'gl', 'GEORGIAN' : 'ka', 'GERMAN' : 'de', 'GREEK' : 'el', 'GUJARATI' : 'gu', 'HAITIAN_CREOLE' : 'ht', 'HEBREW' : 'iw', 'HINDI' : 'hi', 'HUNGARIAN' : 'hu', 'ICELANDIC' : 'is', 'INDONESIAN' : 'id', 'INUKTITUT' : 'iu', 'IRISH' : 'ga', 'ITALIAN' : 'it', 'JAPANESE' : 'ja', 'JAVANESE' : 'jw', 'KANNADA' : 'kn', 'KAZAKH' : 'kk', 'KHMER' : 'km', 'KOREAN' : 'ko', 'KURDISH': 'ku', 'KYRGYZ': 'ky', 'LAO' : 'lo', 'LATIN' : 'la', 'LATVIAN' : 'lv', 'LITHUANIAN' : 'lt', 'LUXEMBOURGISH' : 'lb', 'MACEDONIAN' : 'mk', 'MALAY' : 'ms', 'MALAYALAM' : 'ml', 'MALTESE' : 'mt', 'MAORI' : 'mi', 'MARATHI' : 'mr', 'MONGOLIAN' : 'mn', 'NEPALI' : 'ne', 'NORWEGIAN' : 'no', 'OCCITAN' : 'oc', 'ORIYA' : 'or', 'PASHTO' : 'ps', 'PERSIAN' : 'fa', 'POLISH' : 'pl', 'PORTUGUESE' : 'pt', 'PORTUGUESE_PORTUGAL' : 'pt-PT', 'PUNJABI' : 'pa', 'QUECHUA' : 'qu', 'ROMANIAN' : 'ro', 'RUSSIAN' : 'ru', 'SANSKRIT' : 'sa', 'SCOTS_GAELIC' : 'gd', 'SERBIAN' : 'sr', 'SINDHI' : 'sd', 'SINHALESE' : 'si', 'SLOVAK' : 'sk', 'SLOVENIAN' : 'sl', 'SPANISH' : 'es', 'SUNDANESE' : 'su', 'SWAHILI' : 'sw', 'SWEDISH' : 'sv', 'SYRIAC' : 'syr', 'TAJIK' : 'tg', 'TAMIL' : 'ta', 'TATAR' : 'tt', 'TELUGU' : 'te', 'THAI' : 'th', 'TIBETAN' : 'bo', 'TONGA' : 'to', 'TURKISH' : 'tr', 'UKRAINIAN' : 'uk', 'URDU' : 'ur', 'UZBEK' : 'uz', 'UIGHUR' : 'ug', 'VIETNAMESE' : 'vi', 'WELSH' : 'cy', 'YIDDISH' : 'yi', 'YORUBA' : 'yo', 'UNKNOWN' : '' */ 

    // Creating the query URL 
    $url = "http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" . urlencode($source) . "&langpair=" . $fromLang . "%7C" . $toLang; 

    // send translation request 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
    $response = curl_exec($ch); 
    curl_close($ch); 

    // now, process the JSON string 
    $json = json_decode($response, true); 

    // If response status is okay 
    if ($json['responseStatus'] == 200) 
    { 
     $translated = $json['responseData']['translatedText']; 
    } else 
    { 
     $translated = "****Error. Couldn't translate.****"; 
    }  
    // return translated text 
    return $translated; 
} 

// Get the string you want to translate 
$string = "<b>This is an example</b>"; 
// Strip the HTML tags from the strip and translate it. 
echo translateTexts(strip_tags($string), 'en', 'es'); 

?> 

위 코드를 실행하면 헤더에 적절한 자체 식별 코드를 추가해야합니다.

참고 문헌 :

Google Translation API section for Flash and Non-Javascript Interfaces
PHP cUrl examples
json_decode()
strip_tags()

+0

코드 주셔서 감사합니다. 잘 처리되고 있습니다. – Rekha

+0

@rekhasatjvika - 정말 좋습니다! 코드가 작동하고 문제가 해결 된 경우 답변의 위 및 아래 투표 바로 아래에있는 체크 표시의 개요를 클릭하여 동의해야합니다. –

2
$text = '<b>This is an example</b>'; 
$strippedText = strip_tags($text); 
echo $strippedText; // This is an example 
4

가장 간단한 방법은 DOM은 HTML 태그의 내용을 얻기 위해 구문 분석을 사용하는 것입니다. 그러나 내용을 가져올 태그를 지정해야합니다. 예를 들어, table이나 tr의 내용은 원하지 않지만 td의 내용을 원할 수 있습니다. 다음은 모든 b 태그의 내용을 가져 와서 그 사이의 텍스트를 바꾸는 예제입니다.

$dom_doc = new DOMDocument(); 
$html_file = file_get_contents('file.html'); 
// The next line will likely generate lots of warnings if your html isn't perfect 
// Put an @ in front to suppress the warnings once you review them 
$dom_doc->loadHTML($html_file); 
// Get all references to <b> tag 
$tags_b = $dom_doc->getElementsByTagName('b'); 
// Extract text value and replace with something else 
foreach($tags_b as $tag) { 
    $tag_value = $tag->nodeValue; 
    // get translation of tag_value 
    $translated_val = get_translation_from_google(); 
    $tag->nodeValue = $translated_val; 
} 
// save page with translated text 
$translated_page = $dom_doc->saveHTML(); 

편집 : file_get_contents의 수정 된 맞춤법이 추가되었습니다. $ translated_val 후