Перейти к контенту
  • 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;

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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