@lordning999

PHP перевод текст с HTML тегами, как?

Всем привет. Второй день уже бьюсь не могу придумать логический концепт, для разбора 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 сущностями, разбирает теги, заменяет на специальные символы к примеру !! !! !!, и добавляет данные в массив, после отправляется на перевод, и после перевода, обратно эти символы заменяет на уже данные которые мы ранее добавили в массив. Мне необходимо чтобы с этих тегов брался текст, будь это ссылка внутри нее бывает тоже текст или изображение, и отправлялось в перевод, а потом все это заменялось и чтобы смысл текст не менял, а то такой способ очень жестко форматирует весь смысл текста. Или можно использовать какой то другой подход. Прошу помогите, лучше с примерами, для наглядности и лучшего понимания)))
  • Вопрос задан
  • 298 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
22 апр. 2024, в 16:15
18000 руб./за проект
23 апр. 2024, в 16:55
10000 руб./за проект