Practical developers (dexSoft.ru)
Hello World!!!
Оценка: +0|0-, сообщений: 51
Лето на фотике
Оценка: +0|0-, сообщений: 22
Хобби
Оценка: +0|0-, сообщений: 13
Удаление неактивных пользователей
Оценка: +0|0-, сообщений: 10
автор: fermer
12 сентябрь 2012 19:01
Осень на фотике
автор: Proger
28 август 2012 14:35
ТИЦ Яндекса
автор: admin
30 июнь 2012 18:47
Новый форум сайта dexSoft.ru
автор: smile
26 апрель 2012 21:03
Весна на фотике
автор: Access116
16 март 2012 02:02
Какая лучше?
Создавать темы и оставлять сообщения могут только зарегистрированные пользователи.
 
+0|0-
Тема:

Обработка html тегов в PHP

АвторСообщение
Ссылка21 октябрь 2006 18:39

Как выдрать все теги из строки?

bmw
Ссылка21 октябрь 2006 18:42

Как выдрать все теги из строки?
Выдрать - в смыле удалить?
code Пример кода:
$str = strip_tags($str)
- вырезает все теги.
code Пример кода:
$str = strip_tags($str, "<font>,<strong>,<em>")
- вырезает все теги, кроме тегов font, strong и em.
code Пример кода:
$str = htmlentities($str)
- транслируются специальные символы в их мнемоники. Можно добавить ключи для обработки кавычек.

Ссылка21 октябрь 2006 18:47

Нет, не удалить, а вытащить содержимое тегов.

bmw
Ссылка21 октябрь 2006 19:03

Это удобно делать с помощью регулярных выражений. Например, так:

code Пример кода:
parseTags("
<table width='200' border='1'>
  <tr>
    <td>text1</td>
    <td>text2</td>
  </tr>
</table>
");

function parseTags($str) {
  $tagsCount = preg_match_all("/(<([w]+)[^>]*>)(.*)(</2>)/Usi", $str, $matchs);
  if ($tagsCount > 0) {
  echo "Tags count = $tagsCount";     // количество тэгов в исходной строке
    for ($i = 0; $i < $tagsCount; $i++) {
      echo "0$i = ".htmlspecialchars($matchs[0][$i]);    // полный тэг
      echo "1$i = ".htmlspecialchars($matchs[1][$i]);    // открывающий тег полностью
      echo "2$i = ".htmlspecialchars($matchs[2][$i]);    // имя тега
      echo "3$i = ".htmlspecialchars($matchs[3][$i]);    // InnerText тега
      echo "4$i = ".htmlspecialchars($matchs[4][$i]);    // закрывающий тег полностью
      parseTags($matchs[3][$i]);
    }
  }
}
Выполнение этого кода выдаст вот такой результат:
code Пример кода:
Tags count = 1

00 = <table width='200' border='1'> <tr> <td>text1</td> <td>text2</td> </tr> </table>
10 = <table width='200' border='1'>
20 = table
30 = <tr> <td>text1</td> <td>text2</td> </tr>
40 = </table>

Tags count = 1

00 = <tr> <td>text1</td> <td>text2</td> </tr>
10 = <tr>
20 = tr
30 = <td>text1</td> <td>text2</td>
40 = </tr>

Tags count = 2

00 = <td>text1</td>
10 = <td>
20 = td
30 = text1
40 = </td>

01 = <td>text2</td>
11 = <td>
21 = td
31 = text2
41 = </td>
Ну а дальнейшее завит от того, что надо получить.

Ссылка22 октябрь 2006 20:22

Спасибо. Это то, что надо. Только переделаю под свои нужды...

Статистика форума
Сейчас эту тему читают: всего 1, пользователей 0, гостей 1
Сообщений на форуме: 205
Зарегистрировано пользователей: 2656
Рекорд посещаемости: 411, зафиксирован 10 апрель 2017 13:47
Сайт dexsoft.ru использует cookie-файлы и подобные технологии для улучшения обслуживания посетителей.Закрыть