Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: ряд функций для преобразования html-кода в bbcode

 PHP.SU

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


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

> Описание: адаптировано для парсинга раздач с трекера Zoneland.ru. PHP
romario0403
Отправлено: 02 Февраля, 2012 - 23:09:07
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




жду вашей критики и вопросовУлыбка
"собственно код" (Отобразить)
 
 Top
Dezmont
Отправлено: 21 Марта, 2012 - 11:22:32
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Есть стандартные BBCode функции в PHP. Ссылка

В документации сказано, что эти функции быстрее регулярных выражений. Так что имхо сизифов труд...

(Отредактировано автором: 21 Марта, 2012 - 11:23:49)

 
 Top
Tox
Отправлено: 21 Апреля, 2012 - 18:32:34
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




Dezmont пишет:
Есть стандартные BBCode функции в PHP. Ссылка

В документации сказано, что эти функции быстрее регулярных выражений. Так что имхо сизифов труд...

А такой вопрос - это надо отдельно ставить, то есть пакетики компилировать и прочее, или уже по дефолту доступно? Там написано "установка расширения", вот и спросил


-----
In Console We Trust. Code hard. Or die.
 
 Top
LIME
Отправлено: 21 Апреля, 2012 - 18:47:36
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




для пхп есть библиотек PEAR
она уже должна быть установлена на хостинге
на локалку придется ставить самому
как это делать гугл в помощь
для ббкода есть аналог в PEAR http://pear.php.net/package/HTML_BBCodeParser
о PECL
 
 Top
Tox
Отправлено: 23 Апреля, 2012 - 14:34:37
Post Id



Посетитель


Покинул форум
Сообщений всего: 314
Дата рег-ции: Нояб. 2011  
Откуда: Россия


Помог: 0 раз(а)




Спасибо, установил на хост, вот только проблема: открываем examples/parser.php, все норм, но стоит ввести какое-либо значение из предложенных и нажать "parse", выводится:

Warning: strpos() [function.strpos]: Empty delimiter in HTML/BBCodeParser.php on line 354

PHP:
скопировать код в буфер обмена
  1. /**
  2.      * Builds the tag array from the input string $_text
  3.      *
  4.      * An array consisting of tag and text elements is contructed from the
  5.      * $_preparsed variable. The method uses _buildTag() to check if a tag is
  6.      * valid and to build the actual tag to be added to the tag array.
  7.      *
  8.      * TODO: - rewrite whole method, as this one is old and probably slow
  9.      *       - see if a recursive method would be better than an iterative one
  10.      *
  11.      * @return   none
  12.      * @access   private
  13.      * @see      _buildTag()
  14.      * @see      $_text
  15.      * @see      $_tagArray
  16.      * @author   Stijn de Reede  <sjr@gmx.co.uk>
  17.      */
  18.     function _buildTagArray()
  19.     {
  20.         $this->_tagArray = array();
  21.         $str = $this->_preparsed;
  22.         $strPos = 0;
  23.         $strLength = strlen($str);
  24.  
  25.         while (($strPos < $strLength)) {
  26.             $tag = array();
  27.         $openPos = strpos($str, $this->_options['open'], $strPos);
  28.             if ($openPos === false) {
  29.                 $openPos = $strLength;
  30.                 $nextOpenPos = $strLength;
  31.             }
  32.             if ($openPos + 1 > $strLength) {
  33.                 $nextOpenPos = $strLength;
  34.             } else {
  35.                 $nextOpenPos = strpos($str, $this->_options['open'], $openPos + 1);
  36.                 if ($nextOpenPos === false) {
  37.                     $nextOpenPos = $strLength;
  38.                 }
  39.             }
  40.             $closePos = strpos($str, $this->_options['close'], $strPos);
  41.             if ($closePos === false) {
  42.                 $closePos = $strLength + 1;
  43.             }
  44.  
  45.             if ($openPos == $strPos) {
  46.                 if (($nextOpenPos < $closePos)) {
  47.                     // new open tag before closing tag: treat as text
  48.                     $newPos = $nextOpenPos;
  49.                     $tag['text'] = substr($str, $strPos, $nextOpenPos - $strPos);
  50.                     $tag['type'] = 0;
  51.                 } else {
  52.                     // possible valid tag
  53.                     $newPos = $closePos + 1;
  54.                     $newTag = $this->_buildTag(substr($str, $strPos, $closePos - $strPos + 1));
  55.                     if (($newTag !== false)) {
  56.                         $tag = $newTag;
  57.                     } else {
  58.                         // no valid tag after all
  59.                         $tag['text'] = substr($str, $strPos, $closePos - $strPos + 1);
  60.                         $tag['type'] = 0;
  61.                     }
  62.                 }
  63.             } else {
  64.                 // just text
  65.                 $newPos = $openPos;
  66.                 $tag['text'] = substr($str, $strPos, $openPos - $strPos);
  67.                 $tag['type'] = 0;
  68.             }
  69.  
  70.             // join 2 following text elements
  71.             if ($tag['type'] === 0 && isset($prev) && $prev['type'] === 0) {
  72.                 $tag['text'] = $prev['text'].$tag['text'];
  73.                 array_pop($this->_tagArray);
  74.             }
  75.  
  76.             $this->_tagArray[] = $tag;
  77.             $prev = $tag;
  78.             $strPos = $newPos;
  79.         }
  80.     }

Из того, что написано в комментах ясно, что разработчики просят переписать данный метод.
Ошибка в $openPos = strpos($str, $this->_options['open'], $strPos);
Может кто-то уже делал? Улыбка

(Отредактировано автором: 23 Апреля, 2012 - 14:37:31)



-----
In Console We Trust. Code hard. Or die.
 
 Top
romario0403
Отправлено: 02 Июня, 2012 - 15:36:31
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




эх!...давно тут не был Улыбка
Может я что-то недопонимаю, но ссылки в комментариях ведут на библиотеки для преобразования бб в хтмл.
Мои функции наоборот преобразовывают хтмл-код в бб. Парсер тем с форумов(в моем случае раздач с трекера).
Засунул ссылку и получил бб-код

(Отредактировано автором: 04 Июля, 2012 - 18:23:36)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Пользовательские функции »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB