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


Партнерская программа Kredov

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

#1 Kuchuluk

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

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

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

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

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

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

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

 

 

  • 0

#2 ssabbass

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

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

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

#3 Kuchuluk

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

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

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

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

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

#4 ssabbass

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

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

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

#5 Kuchuluk

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

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

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

#6 fedornabilkin

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

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

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


#7 Kuchuluk

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

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

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


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