2010-08-16 3 views
2

Я хочу извлечь строку между тегами html и преобразовать ее на другой язык с помощью google api и добавить строку с тегами html.Извлечь строку между тегами html в php

Например,

<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 с использованием API Google для перевода серверной части. Функция берет строку в качестве входных данных и удаляет из нее теги 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-тегов. Однако вам нужно указать те теги, для которых вы хотите получить содержимое. Например, вам не нужно содержимое таблицы или 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 и добавлено; после $ transl_val

Смежные вопросы