Класс php для работы с текстом
В одной из моих работ мне было необходимо получить код страницы и решить несколько задач, не буду углубляться, что это была за работа, но собрав нужные функции и написав некоторые из них, я с поставленной задачей справился. Часть из функций я вынес в класс и вот сейчас решил поделиться этими функциями со своими читателями.
Задачи которые были решены в этом классе
- Чистка всех тегов в коде;
- удаление лишних символов и слов, которые не имели большого значения при дальнейшем анализе текста;
- удаление участков кода, которые не принимают участия в индексации страницы и не влияют на выдачу в поисковых системах;
Класс для чистки html кода и работы с текстом
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
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; } } |
1 2 3 4 5 6 7 8 9 10 |
$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.