PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 3
CandyDandy Отправлено: 10 Октября, 2011 - 15:26:00 • Тема: Извлечь текст между тегами. • Форум: Хранение данных, их вывод и обработка

Ответов: 2
Просмотров: 4781
Есть текст примерно такого содержания

CODE (html):
скопировать код в буфер обмена
  1. <p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; ">
  2.         <b>Синий кит</b>&nbsp;(также&nbsp;<b>голубой кит</b>, или&nbsp;<b>блюва&#769;л</b><sup class="reference" id="cite_ref-.D0.91.D0.A1.D0.AD_0-0" style="line-height: 1em; "><a href="http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BD%D0%B8%D0%B9_%D0%BA%D0%B8%D1%82#cite_note-.D0.91.D0.A1.D0.AD-0" style="text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; ">[1]</a></sup>,</p>
  3. <p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; ">
  4.         [blog]</p>
  5. <p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; ">
  6.         Синий кит является типичным представителем&nbsp;<a href="http://ru.wikipedia.org/wiki/%D0%A3%D1%81%D0%B0%D1%82%D1%8B%D0%B5_%D0%BA%D0%B8%D1%82%D1%8B" style="text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; " title="Усатые киты">усатых китов</a>, питающихся&nbsp;<a href="http://ru.wikipedia.org/wiki/%D0%9F%D0%BB%D0%B0%D0%BD%D0%BA%D1%82%D0%BE%D0%BD" style="text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; " title="Планктон">планктоном</a>.</p>
  7. <p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; ">
  8.         [/blog]</p>
  9. <p style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 0.5em; margin-left: 0px; line-height: 1.5em; ">
  10.         Выделяют три&nbsp;<a href="http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B4%D0%B2%D0%B8%D0%B4" style="text-decoration: none; color: rgb(6, 69, 173); background-image: none; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: initial initial; background-repeat: initial initial; " title="Подвид">подвида</a>&nbsp;синего кита&nbsp;&mdash; северный, южный .</p>
  11.  


Из него нужно получить все строчки между тегами [blog][/blog]
И весь текст без тегов [blog][/blog]включая их содержимое.

PHP:
скопировать код в буфер обмена
  1. $result = preg_match_all("/(?<=\[blog\]).+(?=\[\/blog\])/", $text, $matches);
вот что написал но не работает.
CandyDandy Отправлено: 07 Октября, 2011 - 20:11:43 • Тема: Рекурсивная функция не записывает в массив подкатегории • Форум: Если скрипт не работает

Ответов: 1
Просмотров: 1430
Просто массив надо было объявить глобально. Всем спасибо кто думал )))
CandyDandy Отправлено: 07 Октября, 2011 - 17:40:27 • Тема: Рекурсивная функция не записывает в массив подкатегории • Форум: Если скрипт не работает

Ответов: 1
Просмотров: 1430
Конечно скорее всего это я делаю что то неправильно )
Функция отлично выводит(структурирует) категории (id) и подкатегории(under_id) с неограниченным количеством вложений из массива.
Но теперь мне нужно записать всё структурированное меню в новый массив $category.
На месте где сейчас запись $category[$count] = array (.. и т.п. был echo который отлично и по порядку всё выводил.
Но в массив он записывает только категории первого уровня(under_id - 0)! Почему так происходит и как это исправить?
PHP:
скопировать код в буфер обмена
  1. // Показывает все объекты массива по его номеру подкатегории (under_id)
  2.         function isset_under_id($cat_array, $this_under_id)
  3.         {
  4.             foreach ($cat_array as $row)
  5.             {
  6.                 $id            = $row['id'];       // id объекта
  7.                 $under_id      = $row['under_id']; // подкатегория объекта
  8.                 $name          = $row['name'];     // название объекта
  9.  
  10.                 if ($under_id == $this_under_id)
  11.                 {
  12.                     return true;
  13.                 }
  14.             }
  15.         }
  16.  
  17.         // Показывает все объекты массива по его номеру подкатегории (under_id)
  18.         function menu($cat_array, $this_under_id)
  19.         {
  20.             $s = 1;
  21.  
  22.             foreach ($cat_array as $row)
  23.             {
  24.                 $id            = $row['id'];       // id объекта
  25.                 $under_id      = $row['under_id']; // подкатегория объекта
  26.                 $name          = $row['name'];     // название объекта
  27.  
  28.                 if ($under_id == $this_under_id)
  29.                 {
  30.                     static $i = -1;
  31.                     if ($s == 1) {$i++; $s = 2;}
  32.  
  33.                     static $count = 0; $count++; // номер текущего вывода
  34.  
  35.                     // echo $count,'lvl- ',$i,'',$name,'- ',$id,'- ',$under_id,'<br>';
  36.  
  37.                     $categories[$count] = array(
  38.                         'lvl' => $i,
  39.                         'id' => $id,
  40.                         'under_id' => $under_id,
  41.                         'name' => $name
  42.                     );
  43.  
  44.                     if (!isset($cat_array[$count])) {echo'la fin'; return $categories; }
  45.  
  46.                     // если в массиве существует такой under_id -> вызови функцию заново
  47.                     if (isset_under_id($cat_array, $id))
  48.                     {
  49.                         menu($cat_array, $id);$i = 0;
  50.  
  51.                     }
  52.                     else
  53.                     {
  54.                         $n = 0;
  55.                     }
  56.                 }
  57.             }
  58.         }
  59.  
  60.         echo '<pre>';
  61.         print_r(menu($cat_array,0,0));
  62.         echo '</pre>';
  63.  


Выводит:
PHP:
скопировать код в буфер обмена
  1. (
  2.     [1] => Array
  3.         (
  4.             [lvl] => 0
  5.             [id] => 4
  6.             [under_id] => 0
  7.             [name] => Мальчики
  8.         )
  9.  
  10.     [5] => Array
  11.         (
  12.             [lvl] => 0
  13.             [id] => 5
  14.             [under_id] => 0
  15.             [name] => Девочки
  16.         )
  17.  
  18.     [8] => Array
  19.         (
  20.             [lvl] => 0
  21.             [id] => 6
  22.             [under_id] => 0
  23.             [name] => Киборги
  24.         )
  25.  
  26. )
  27.  
  28. если делаю обычное echo выводит:
  29.  
  30. 1lvl- 0Мальчики- 4- 0
  31. 2lvl- 1Саша- 1- 4
  32. 3lvl- 1Вова- 3- 4
  33. 4lvl- 2Любит Машу- 8- 3
  34. 5lvl- 0Девочки- 5- 0
  35. 6lvl- 1Маша- 2- 5
  36. 7lvl- 2Не любит никого- 9- 2
  37. 8lvl- 0Киборги- 6- 0
  38. la fin


Как исправить? Что не так?

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB