Всем привет. Второй день уже бьюсь не могу придумать логический концепт, для разбора HTML тегов и перевода текста в них. Подскажите как реализовать, сейчас имею такой код.
$data = file_get_contents( $url );
$data_new = str_get_html( $data );
// Пример
$text = '<p>Where good <a href="http://example.com/">Blody</a></p>';
$data_text = str_get_html( trim( $text ) );
$array_text_sold = array();
$array_valible_ahref = array();
foreach( $data_text->find('a') as $key => $element )
{
$array_valible_ahref[] = $element->outertext;
$data_text->find('a', $key)->outertext = '!! !! !! !!';
}
$array_valible_h1 = array();
foreach( $data_text->find('h1') as $key => $element )
{
$array_valible_h1[] = $element->outertext;
$data_text->find('h1', $key)->outertext = '!*! !! !! !!';
}
$array_valible_h2 = array();
foreach( $data_text->find('h2') as $key => $element )
{
$array_valible_h2[] = $element->outertext;
$data_text->find('h2', $key)->outertext = '!*! !*! !! !!';
}
$array_valible_h3 = array();
foreach( $data_text->find('h3') as $key => $element )
{
$array_valible_h3[] = $element->outertext;
$data_text->find('h3', $key)->outertext = '!*! !*! !*! !!';
}
$array_valible_code = array();
foreach( $data_text->find('code') as $key => $element )
{
$array_valible_code[] = $element->outertext;
$data_text->find('code', $key)->outertext = '!* !* !* !*';
}
$array_valible_ul = array();
foreach( $data_text->find('ul li') as $key => $element )
{
$array_valible_ul[] = $element->outertext;
$data_text->find('ul li', $key)->outertext = '!!* !!* !!* !!';
}
$array_valible_ol = array();
foreach( $data_text->find('ol li') as $key => $element )
{
$array_valible_ol[] = $element->outertext;
$data_text->find('ol li', $key)->outertext = '*!* *!* *!* !!';
}
foreach( $data_text->find('p') as $key => $element )
{
$data_text->find('p', $key)->innertext = TranslateAPI( $element->innertext );
}
$array_translate['text'] = $data_text->save();
# Заменяем данные после перевода текста
if( $array_valible_ahref )
{
foreach( $array_valible_ahref as $key => $element )
{
$array_translate['text'] = str_replace_once('!! !! !! !!', $element, $array_translate['text']);
}
}
# Заменяем данные после перевода текста
if( $array_valible_h1 )
{
foreach( $array_valible_h1 as $key => $element )
{
$array_translate['text'] = str_replace_once('!*! !! !! !!', TranslateAPI( $element ), $array_translate['text']);
}
}
# Заменяем данные после перевода текста
if( $array_valible_h2 )
{
foreach( $array_valible_h2 as $key => $element )
{
$array_translate['text'] = str_replace_once('!*! !*! !! !!', TranslateAPI( $element ), $array_translate['text']);
}
}
# Заменяем данные после перевода текста
if( $array_valible_h3 )
{
foreach( $array_valible_h3 as $key => $element )
{
$array_translate['text'] = str_replace_once('!*! !*! !*! !!', TranslateAPI( $element ), $array_translate['text']);
}
}
# Заменяем данные после перевода текста
if( $array_valible_ul )
{
foreach( $array_valible_ul as $key => $element )
{
$array_translate['text'] = str_replace_once('!!* !!* !!* !!', TranslateAPI( $element ), $array_translate['text']);
}
}
# Заменяем данные после перевода текста
if( $array_valible_ol )
{
foreach( $array_valible_ol as $key => $element )
{
$array_translate['text'] = str_replace_once('*!* *!* *!* !!', TranslateAPI( $element ), $array_translate['text']);
}
}
if( $array_valible_code )
{
foreach( $array_valible_code as $key => $element )
{
$array_translate['text'] = str_replace_once('!* !* !* !*', $element, $array_translate['text']);
}
}
То есть этот код работает сейчас так, получает текст с HTML сущностями, разбирает теги, заменяет на специальные символы к примеру !! !! !!, и добавляет данные в массив, после отправляется на перевод, и после перевода, обратно эти символы заменяет на уже данные которые мы ранее добавили в массив. Мне необходимо чтобы с этих тегов брался текст, будь это ссылка внутри нее бывает тоже текст или изображение, и отправлялось в перевод, а потом все это заменялось и чтобы смысл текст не менял, а то такой способ очень жестко форматирует весь смысл текста. Или можно использовать какой то другой подход. Прошу помогите, лучше с примерами, для наглядности и лучшего понимания)))