Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[BETA] Cut parsed template

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет 1 месяц

Сообщение quazi »

Код: Выделить всё

class IgnoreWhiteSpaces
{

	function process($s)
	{
		// Temporary buffer
		$GLOBALS['__IgnoreWhiteSpaces__process__'] = array();

		// Save all problem parts
		$s = preg_replace_callback(
			"/(<(script|style)[^>]*?>((?!<\/\\2>).)*?<\/\\2>)/s",
			array('IgnoreWhiteSpaces', '_ob_parse'),
			$s
		);

		// Strip all white spaces
		$s = preg_replace('/\s+/', '', $s);

		// Restore all saved parts
		$s = preg_replace(
			array_values($GLOBALS['__IgnoreWhiteSpaces__process__']),
			array_keys($GLOBALS['__IgnoreWhiteSpaces__process__']),
			$s
		);

		// Destroy buffer
		unset($GLOBALS['__IgnoreWhiteSpaces__process__']);

		// Return result
		return $s;
	}

	function _ob_parse($matches)
	{
		// Generate hash of string
		$s = $matches[1];
		$md5 = md5($s);

		// Save this string
		$GLOBALS['__IgnoreWhiteSpaces__process__'][$s] = '/' . $md5 . '/';

		// Make here the more delicate handle of embed scripts

		// Return hash of saved string
		return $md5;
	}

}
[R: R@m$e$ :U], проверь у себя вот это

пользовать так

Код: Выделить всё

echo IgnoreWhiteSpaces::process($s);
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Стаж: 19 лет 3 месяца
Откуда: Novosibirsk,RU

Сообщение [R: R@m$e$ :U] »

quazi
лучше тебе не видеть, что с форумом стало после этого... =)
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 19 лет 1 месяц

Сообщение quazi »

quazi, аффтар выпей иаду

[R: R@m$e$ :U]
вот это надо

Код: Выделить всё

      // Strip all white spaces
      $s = preg_replace(
            array('\r', '/(\s)\s+/'),
            array('', '\1'),
            $s);
Аватара пользователя
Никто
Advanced Lamers Team
Сообщения: 316
Стаж: 18 лет 3 месяца
Откуда: Химки
Забанен: Бессрочно

Сообщение Никто »

Хотелось уточнить. Класец запихнуть в template.php я так понимаю? А echo IgnoreWhiteSpaces::process($s); получается в футер чтоль? Или куда?
Долой edgar'a - самого тупого юзера на форуме!
Delestor
phpBB 1.4.1
Сообщения: 44
Стаж: 17 лет 10 месяцев

Сообщение Delestor »

quazi писал(а):quazi, аффтар выпей иаду



[R: R@m$e$ :U]

вот это надо

Код:

      // Strip all white spaces

      $s = preg_replace(

            array('\r', '/(\s)\s+/'),

            array('', '\1'),

            $s);
Так и не могу понять что к чему...
То, что на первой странице с явой работает неправильно.
Похоже проект умер?...

Добавлено спустя 9 часов 43 минуты 15 секунд:
Никто писал(а):в футер чтоль? Или куда?
Шаблон не выполняется, следовательно echo не сработает.
Пробовал кидать класс в template.php, в includes\function - чистая станица.

Добавлено спустя 1 час 40 минут 20 секунд:

Класс вставлять в includes\function\functions.php например в самый конец.

В templates.php после:

Код: Выделить всё

				{
					$code_lines[$i] = '$' . $retvar . '.= \'' . $code_lines[$i] . '\' . "\\n";'; 
				}
Добавляем:

Код: Выделить всё

//CTPT FQP4:A
$code_lines[$i]= IgnoreWhiteSpaces::process($code_lines[$i]);
На выходе получаем кашу, чем-то напоминающую PDA шаблоны.
quazi писал(а):[R: R@m$e$ :U]
вот это надо
Если в классе:

Код: Выделить всё

      // Strip all white spaces 
      $s = preg_replace('/\s+/', '', $s);
Заменить на:

Код: Выделить всё

      // Strip all white spaces 
      $s = preg_replace( 
            array('\r', '/(\s)\s+/'), 
            array('', '\1'), 
            $s);
Тогда в браузере:

Код: Выделить всё

Warning: preg_replace(): Delimiter must not be alphanumeric or backslash in w:\home\mysite\www\forum\includes\functions.php on line 1064
В фантастическом количестве...
Естественно всё лишее осталось на месте.

1064 строка:

Код: Выделить всё

      
          $s = preg_replace(
                      array('\r', '/(\s)\s+/'),
                      array('', '\1'),
1064:                   $s);
Чувствую себя натуральной блондинкой...

Вернуться в «Бета-версии модов для phpBB 2.0.x»