Перейти к содержимому



Уничтожение всех тегов с помощью регулярки

#1

Поделиться сообщением #1



Kuchuluk

Kuchuluk
  • Пользователь
  • 320 сообщений
  • Репутация: 5
0

Отправлено 18 Ноябрь 2013 - 23:31

столкнулся с такой проблемой. Вырезаю из текста статьи короткое описание для мета тега description. Но в тексте статьи есть теги абзацев, картинок, переносов строки и т. д. Делаю регулярку чтобы уничтожать их. Если делаю так

$rsMetaDescription = preg_replace("#\<\/[a-z]\>#"," ", $meta);

то уничтожаются только закрывающие теги (например </p>), если делаю так

$rsMetaDescription = preg_replace("#\<[\/a-z]\>#"," ", $meta);

то наоборот закрывающие уничтожаются, зато открывающие остаются. Кто с регулярками хорошо знаком? Как сделать универсальную регулярную? Или полюбому надо два раза проводить уничтожение?

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Не могу написать скрипт индексатора
  2. Наличие открывающихся и закрывающихся тэгов
  3. Редактирование файлов XML
  4. Удаление\Изменение тегов
  5. Запрет на индексацию страниц сайта и отдельных частей контента

#2

Поделиться сообщением #2



ssabbass

ssabbass
  • Пользователь
  • 280 сообщений
  • Репутация: 33

Отправлено 19 Ноябрь 2013 - 01:32

Попробуйте удалить все, что в кавычках:
$rsMetaDescription = preg_replace('/(<([^>]+)>)/U', '', $meta);
или использовать strip_tags (нужно пробовать, но у меня в PHPDesigner работают оба варианта).
  • 1

#3

Поделиться сообщением #3



Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 320 сообщений
  • Репутация: 5

Отправлено 19 Ноябрь 2013 - 09:26

еще когда в начале вырезаю текст из текста статьи

$meta = substr($row['text'], 3, 155);

его почему то становится меньше, чем 155 символов, в 2 раза меньше
  • 0

#4

Поделиться сообщением #4



ssabbass

ssabbass
  • Пользователь
  • 280 сообщений
  • Репутация: 33

Отправлено 19 Ноябрь 2013 - 10:04

Если у вас символы из текста берутся еще ДО вырезки из них тегов регуляркой, то, возможно, просто упускаете из вида наличие пробелов. Как вариант - увеличить число захватываемых символов.
  • 0

#5

Поделиться сообщением #5



Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 320 сообщений
  • Репутация: 5

Отправлено 19 Ноябрь 2013 - 10:47

понятно. А вообще для мета тега дискрипшн максимальное кол-во символов 155 же, да?
  • 0

#6

Поделиться сообщением #6



fedornabilkin

fedornabilkin
  • Пользователь
  • 727 сообщений
  • Репутация: 102

Отправлено 23 Ноябрь 2013 - 09:06

$rsMetaDescription = preg_replace('/<p[^>]*?>(.*?)</p>/U', '$1', $meta);
Только предварительно необходимо выбрать все абзацы в массив и пройтись циклом
  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


#7

Поделиться сообщением #7



Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 320 сообщений
  • Репутация: 5

Отправлено 23 Ноябрь 2013 - 09:36

надо не только теги p уничтожать, там другие могут быть
  • 0


Оформление форума – IPBSkins.ru