Класс php для работы с текстом
В одной из моих работ мне было необходимо получить код страницы и решить несколько задач, не буду углубляться, что это была за работа, но собрав нужные функции и написав некоторые из них, я с поставленной задачей справился. Часть из функций я вынес в класс и вот сейчас решил поделиться этими функциями со своими читателями.
Задачи которые были решены в этом классе
- Чистка всех тегов в коде;
- удаление лишних символов и слов, которые не имели большого значения при дальнейшем анализе текста;
- удаление участков кода, которые не принимают участия в индексации страницы и не влияют на выдачу в поисковых системах;
Класс для чистки 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);
Вот такая памятка программисту получилась. Думаю многим будет полезно для своих проектов. Удачи в разработке сайтов.
/*

- Базовый курс по веб-дизайну;
- Верстка сайтов;
- Общий курс по CMS WordPress и продолжение курса по разработке шаблонов;
- Разработка сайтов на PHP.




