Задавайте вопросы по курсам WordPress

Класс php для работы с текстом

В одной из моих работ мне было необходимо получить код страницы и решить несколько задач, не буду углубляться, что это была за работа, но собрав нужные функции и написав некоторые из них, я с поставленной задачей справился. Часть из функций я вынес в класс и вот сейчас решил поделиться этими функциями со своими читателями.

Задачи которые были решены в этом классе

  1. Чистка всех тегов в коде;
  2. удаление лишних символов и слов, которые не имели большого значения при дальнейшем анализе текста;
  3. удаление участков кода, которые не принимают участия в индексации страницы и не влияют на выдачу в поисковых системах;

Класс для чистки html кода и работы с текстом

class textOperation{
	
	function wp_strip_all_tags($string, $remove_breaks = false) { // чистит все теги 
		$string = preg_replace( '@<(script|style)[^>]*?>.*?</\\1>@si', '', $string );
		$string = strip_tags($string);

		if ( $remove_breaks )
			$string = preg_replace('/[\r\n\t ]+/', ' ', $string);

		return trim($string);
	}
	
	function cleanTextHtml($text){
	$search = array ("'<script[^>]*?>.*?</script>'si",  // Вырезается javascript 
					 "'<[\/\!]*?[^<>]*?>'si",           // Вырезаются html-тэги 
					 "'([\r\n])[\s]+'",                 // Вырезается пустое пространство 
					 "'&(quot|#34);'i",                 // Замещаются html-элементы 
					 "'&(amp|#38);'i", 
					 "'&(lt|#60);'i", 
					 "'&(gt|#62);'i", 
					 "'&(nbsp|#160);'i", 
					 "'&(iexcl|#161);'i", 
					 "'&(cent|#162);'i", 
					 "'&(pound|#163);'i", 
					 "'&(copy|#169);'i" 
	); 

	$replace = array ("", 
					  "", 
					  "\\1", 
					  "\"", 
					  "&", 
					  "<", 
					  ">", 
					  " ", 
					  chr(161), 
					  chr(162), 
					  chr(163), 
					  chr(169) 
	); 

	$text = preg_replace($search, $replace, $text); 	
	return $text;
	}
	
	function delsimbpl($text){
		$del_symbols = array(",", ".", ";", ":", "\"", "#", "\$", "%", "^",
                         "!", "@", "`", "~", "*", "-", "=", "+", "\\",
                         "|", "/", ">", "<", "(", ")", "&", "?", "?", "\t",
                         "\r", "\n", "{","}","[","]", "'", "“", "”", "•",
                         " как ", " для ", " что ", " или ", " это ", " этих ",
                         " всех ", " вас ", " они ", " оно ", " еще ", " когда ",
                         " где ", " эта ", " лишь ", " уже ", " вам ", " нет ",
                         " если ", " надо ", " все ", " так ", " его ", " чем ",
                         " при ", " даже ", " мне ", " есть ", " раз ", " два ", " в ", "не",
                         " 0 ", " 1 ", " 2 ", " 3 ", " 4 ", " 5 ", " 6 ", " 7 ", " 8 ", " 9 "
                         );
		$text = str_replace($del_symbols, ' ', $text);
		return $text;
	}
	
	function wordcount($text){
		$text = $this->clearnBadHtml($text);
		$text = $this->cleanTextHtml($text);
		$text = $this->delsimbpl($text);
		$array = explode(' ', $text);
		echo '<pre>';
		print_r($array);
		echo '</pre>';
		return count($array);
		$array = $this->RemoveEmpty($array);
		return count($array);
	}
	
	function clearnBadHtml($code){ // убрать noindex nofollow <!---->
		$res = preg_replace("|<noindex>(.*?)</noindex>|si",'',$code);
		$res = preg_replace("|<style>(.*?)</style>|si",'',$res);
		$res = preg_replace("|<script(.*?)>(.*?)</script>|si",'',$res);
		$res = preg_replace("|<link(.*?) />|si",'',$res);
		$res = preg_replace("|\n\n|si",'',$res);
		$res = preg_replace("|\r\r|si",'',$res);
		//$res = preg_replace("|<a(.*?)rel=(.*?)nofollow(.*?)</a>|si",'',$res); // не всегда срабатывает
		$res = preg_replace("|<!--(.*?)-->|si",'',$res);
		$res = preg_replace(array("<noindex>","</noindex>"),'',$res);
		return $res;
	}
	
	function RemoveEmpty($array)
	{
		$Result = array();
		foreach ($array as $key => $value) {
			if ($value != '')
				$Result[] = $value;
		}
		return $Result;
	}
}

Ниже покажу пример использования класса. Класс используется для очистки кода и оставляет только текст.

$obj = new textOperation;
$text = '	<ul class="sub-menu">
		<li id="menu-item-2662" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2662"><a href="https://wp-admin.com.ua/uroki-frilansa/oblasti-frilansa/"><span>Области фриланса</span></a></li>
	</ul>
</li>
	<li id="menu-item-2671" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2671"><a href="https://wp-admin.com.ua/uroki-frilansa/frilans-i-fultaym-sushhestvuyut-vmeste/"><span>Фриланс и фултайм существуют вместе</span></a></li>
	<li id="menu-item-2669" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2669"><a href="https://wp-admin.com.ua/uroki-frilansa/test-smogu-li-stat-frilanserom/"><span>Тест смогу ли стать фрилансером</span></a></li>
	<li id="menu-item-2661" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2661"><a href="https://wp-admin.com.ua/uroki-frilansa/mogu-li-ya-stat-frilanserom/"><span>Могу ли я стать фрилансером?</span></a></li>
</ul>';
echo $obj->wp_strip_all_tags($text);

Вот такая памятка программисту получилась. Думаю многим будет полезно для своих проектов. Удачи в разработке сайтов.


Купить хостинг WordPress
/* Репетитор по wordpress
Услуги репетитора онлайн. Список курсов которые я веду
  • Базовый курс по веб-дизайну;
  • Верстка сайтов;
  • Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
  • Разработка сайтов на PHP.
Подробнее читайте на странице репетитор по WordPress
*/

Николаенко Максим

Директор веб-студии ProGrafika. Занимаюсь разработкой, дизайном и продвижением веб-сайтов. Всегда рад новым читателям блога и хорошим клиентам.


Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Шаблоны для WordPress
Самый лучший хостинг в Украине
Стабильный хостинг для Drupal