Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Возвращает отформатированую строку ключевых слов разделенных запятыми
- *
- * @param string $string - Входная строка для форматирования
- * @param string $prefix - Если нужно, то можно задавать значение первому слову в keywords
- * @param integer $limit - Лимит количества слов
- * @param string $separator - Разделитель слов
- * @return string - Отформатированная строка разделенная $separator-ом
- */
- public function seoGenerateKeywordsFromString($string, $prefix = '', $limit = 10, $separator = ', ')
- {
- // Переводим все в нижний регистр
- $string = mb_convert_case($string, MB_CASE_LOWER, 'UTF-8');
- $stringsArray = explode(' ', $string);
- $stopWordsArray = $this->getModelsLoader()->load('SeoCommon')->getStopWords();
- // Отформатированный массив, который исключает стоп-слова и повторения
- $stringsArray = array_unique(array_diff($stringsArray, $stopWordsArray));
- // Шаблоны
- $replacementPatterns = [
- '/[^а-я a-z 0-9]/u', // удаляет все знаки, кроме букв и чисел
- '/\b\w{1,3}\b/u', // удаляет все слова, которые <= 3-х знаков
- ];
- // Очищает уже обработанный массив применяя шаблоны регулярных выражений. см. выше
- $stringsArray = preg_replace($replacementPatterns, '', $stringsArray);
- // Создаем строку ключевых слов разделенных $separator-ом с ограничением в $limit слов
- $keywords = implode($separator, array_slice(array_filter($stringsArray), 0, $limit));
- // Добавляем префикс
- if (!empty($prefix)) {
- $keywords = $prefix . $separator . $keywords;
- }
- return $keywords;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement