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



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

#1 Kuchuluk
Kuchuluk
  • Неактивные
  • 333 сообщений
  • Репутация: 5
0

Обновлено 23 ноября 2013 - 09:36  Отправлено 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
  • Неактивные
  • 333 сообщений
  • Репутация: 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
  • Неактивные
  • 333 сообщений
  • Репутация: 5

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

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

#6 fedornabilkin
fedornabilkin
  • Модератор
  • 1 191 сообщений
  • Репутация: 206

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

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

Надо обсудить предложение. А тут знакосчиталка считает знаки. Про Yii2 написано.



#7 Kuchuluk
Kuchuluk
    Topic Starter
  • Неактивные
  • 333 сообщений
  • Репутация: 5

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

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


Пользователь месяца
Megoydagi Megoydagi 1-й за Август
Очков активности: 30 4 темы, 8 сообщений, 1 балл репутации
Сайт: bank.net.ru
ТОП самых активных за этот месяц
  • Фотография Vmir
    #1

    Vmir
    Очков активности: 48 3 темы, 7 сообщений, 2 балла репутации

  • Фотография BLIK
    #2

    BLIK
    Очков активности: 40.5 Вне конкурса за определение пользователя месяца

  • Фотография SergiuS85
    #3

    SergiuS85
    Очков активности: 12 2 темы, 2 сообщения, 1 балл репутации

  • Фотография WGN
    #4

    WGN (worldgamenews.com)
    Очков активности: 12 1 тема, 5 сообщений, 1 балл репутации

  • Фотография Totti
    #5

    Totti
    Очков активности: 12 0 тем, 8 сообщений, 1 балл репутации

  • Фотография kuztoday
    #6

    kuztoday
    Очков активности: 10.5 1 тема, 4 сообщения, 1 балл репутации

  • Фотография Zevss
    #7

    Zevss (domles43.ru)
    Очков активности: 10.5 2 темы, 1 сообщение, 1 балл репутации

  • Фотография Sale_account
    #8

    Sale_account
    Очков активности: 10.5 2 темы, 1 сообщение, 1 балл репутации

  • Фотография Megoydagi
    #9

    Megoydagi (bank.net.ru)
    Очков активности: 9 Вне конкурса за определение пользователя месяца

  • Фотография mkreine
    #10

    mkreine (analiz-krovi.net)
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

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