Перейти к контенту
  • 0

Вставка кода парсинга добавляемого сообщения...


Вопрос

Мне нужно вставить определенный парсинг сообщения, которое вводится в форум (добавление ответа через форму быстрого ответа, через обычный ответ, через создание темы или опроса). Я нашел место, где происходит добавление в БД, но там уже добавляется измененный текст, т. е. с html-тегами и тому подобное. А мне нужно парсить именно то сообщение, которое непосредственно ввел пользователь, до распознавание тегов форума.

В какой файл вставлять и в какую функцию?

 

Заранее спасибо.

 

P. S.

Версия IPB 1.2

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Да много куда можно..

Наверно самое удачное, это Post.php, ф-ия compile_post()

 

хотя всё зависит от того, что именно тебе нужно сделать.

 

винград вижу пошёл в массы ;-)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Спасибо, сейчас попробую...

 

Мне вот это впринцепе нужно убрать:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

 

винград вижу пошёл в массы ;-)

т.е.?

 

Понятно, что таблица растягивается... Мы тут делаем разбитие "длинного слова" пробелами... А разрабатывалось все это для исходного сообщения без распознанных тегов...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

А это стандартная возможность форума. Оно убирается в Topics.php при выводе.

Нужно включить разрыв длинных строк в админке.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

AdminCP -> Topics, Posts & Polls:

No. characters to word wrap on?

Prevents long unbroken words which distort tables. 80 - 100 is recommended

Ссылка на комментарий
Поделиться на других сайтах

  • 0

такая функция есть, она называется что-то вроде "принудительно переносить слово длиннее NN символов (рекомендуется 80)"

кажется что-то вроде этого.

в настройках "темы, сообщения, опросы".

 

фигня только в том, что у меня эта функция всегда была включена, на всех ставившихся версиях движка, но НИКОГДА она не работала, а мне было лень разбираться почему.

 

между прочим, здесь эта функция переноса тоже должна быть включена, во всяком случае в этом уверял меня тот, кто собственно тут рулит. но, как видим - не пашет это дело.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Дяяя... Не работает штуковина вообще... :D

 

Пока проблему решили вот таким образом:

 

В самое начало (после global) в функцию add_reply из post_reply_post поставили следующий код:

								//-------------------------------------------------
	// Break long "words"
	// © 2006, Stranger, pforum.com.ru
	//-------------------------------------------------

	$str = $this->post['post'];
	$maxlen=50;
	$counter=0; 
	$i=0;
	$l=strlen($str);
	$divider=" ";
	//------------ lets go!!!
	while ($i < $l)
	{
		//------- tag exceptions - limitation of parsing
		if ($str[$i] == '<')
			while ($str[$i] != '>') 
				$i++;
		//------- end of tag exceptions
		else
		{
  				if ($str[$i]!=' ') 
				$counter++; 
			else 
				$counter=0;
			if ($counter==$maxlen)
 				{
					$counter=0;
					  if ($str[$i+1]!=' ') 
					{
						$str = substr($str, 0, $i).$divider.substr($str, $i++);
						$l+=strlen($divider);
					}
 				}
  			}
			$i++;
	 }
	//------------ that's all.
	$this->post['post'] = $str;

 

Минус данного метода заключается в некрасивом разбиении большой группы восклицательных знаков:

 

!!!!!!& #33;!

 

Усоврешенствованный вариант с корректным разбиением символов...

		//-------------------------------------------------
	// Break long "words"
	// © 2006, Stranger, pforum.com.ru
	//-------------------------------------------------
	$str = $this->post['post'];
	$maxlen=80;
	$counter=0; 
	$i=0;
	$l=strlen($str);
	$divider=" ";
	//------------ lets go!!!
	while ($i < $l)
	{
		//------- tag exceptions - limitation of parsing
		if ($str[$i] == '<')
			while ($str[$i] != '>') 
				$i++;
		//------- end of tag exceptions
		else
		{
  				if ($str[$i]!=' ') 
				$counter++; 
			else 
				$counter=0;
			if ($counter==$maxlen)
 				{
					$counter=0;
					  if ($str[$i+1]!=' ') 
					{
						$j=$i;
						while (($str[$j] != ';') && ($j - $i != 4))
							$j++;
						if ($j - $i < 4)
							$i=$j + 1;
						$str = substr($str, 0, $i).$divider.substr($str, $i++);
						$l+=strlen($divider);
					}
 				}
  			}
			$i++;
	 }
	//------------ that's all.
	$this->post['post'] = $str;

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.