Посмотрите в БД.LCFSCS писал(а): 28.12.2018 23:12 Просмотрел все добавленные теги в админке - ни в одном нет модификаторов.
Как приучить к PHP 7.2?
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ | Как задавать вопросы | Как устанавливать расширения
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
 ).
 ).
		
		- 
				nissin  
- phpBB 3.0.4
- Сообщения: 2224
- Стаж: 17 лет 10 месяцев
- Откуда: Павлодар
- Благодарил (а): 2 раза
- Поблагодарили: 121 раз
Re: Как приучить к PHP 7.2?
- 
				LCFSCS
- phpBB 1.2.1
- Сообщения: 23
- Стаж: 6 лет 10 месяцев
- Благодарил (а): 2 раза
Re: Как приучить к PHP 7.2?
Действительно в базе сидит куча модификаторов:
Код: Выделить всё
13, 'center', 'Текст, выровненный по центру: [center]текст[/center]', 1, '[center]{TEXT}[/center]', '<div style=\"text-align:center;\">{TEXT}</div>', '!\\[center\\](.*?)\\[/center\\]!ies',
И с этим теперь ничего не сделать?
Придётся временно "отключить" "свои" теги (до переезда на сервак), либо пытаться реализовать функционал и дизайн на новой версии?
- 
				nissin  
- phpBB 3.0.4
- Сообщения: 2224
- Стаж: 17 лет 10 месяцев
- Откуда: Павлодар
- Благодарил (а): 2 раза
- Поблагодарили: 121 раз
Re: Как приучить к PHP 7.2?
includes/acp/acp_bbcodes.php и includes/bbcode.php надеюсь правили?Теперь нужно просто пересохранить все пользовательские bbcode.
- 
				LCFSCS
- phpBB 1.2.1
- Сообщения: 23
- Стаж: 6 лет 10 месяцев
- Благодарил (а): 2 раза
Re: Как приучить к PHP 7.2?
Всё поправил (всё, что нашёл).nissin писал(а): 30.12.2018 1:40 ну вы же includes/acp/acp_bbcodes.php и includes/bbcode.php надеюсь правили?
Теперь нужно просто пересохранить все пользовательские bbcode.
Сегодня передобавлю теги - отпишу результат.
Спасибо.
- 
				LCFSCS
- phpBB 1.2.1
- Сообщения: 23
- Стаж: 6 лет 10 месяцев
- Благодарил (а): 2 раза
Re: Как приучить к PHP 7.2?
Спасибо. Сработало. Нет ошибок, все теги работают. Но вот во всех старых сообщениях теги не обрабатываются (от есть отображаются тегами).
Как это можно исправить? (Пересохранить 70 тысячь сообщений в принципе возможно, но можно сойти с ума, да и, думаю, есть другой вариант... Полюбому уже встречалась такая проблема после обновлений)
- 
				LCFSCS
- phpBB 1.2.1
- Сообщения: 23
- Стаж: 6 лет 10 месяцев
- Благодарил (а): 2 раза
Re: Как приучить к PHP 7.2?
А это где/как?
---------------------------------------
Поторопился я радоваться... Заново добавил теги в PHP 5.6, чтобы "надёжней" и, забыв переключиться на PHP 7, начал тестить.
Бесполезно это. Дело в том, что модификаторы e для своих тегов phpBB пихает и на версии 3.2.4 - толбко что проверил.
Код: Выделить всё
VALUES (13, 'c', 'Текст, выровненный по центру: [c]текст[/c]', 0, '[c]{TEXT}[/c]', '<div style=\"text-align:center;\">{TEXT}</div>', '!\\[c\\](.*?)\\[/c\\]!ies', '\'[c:$uid]\'.str_replace(array(\"\\r\\n\", \'\\\"\', \'\\\'\', \'(\', \')\'), array(\"\\n\", \'\"\', \''\', \'(\', \')\'), trim(\'${1}\')).\'[/c:$uid]\'', '!\\[c:$uid\\](.*?)\\[/c:$uid\\]!s', '<div style=\"text-align:center;\">${1}</div>'),(14, 'center', 'Текст, выровненный по центру: [center]текст[/center]', 1, '[center]{TEXT}[/center]', '<div style=\"text-align:center;\">{TEXT}</div>', '!\\[center\\](.*?)\\[/center\\]!ies', '\'[center:$uid]\'.str_replace(array(\"\\r\\n\", \'\\\"\', \'\\\'\', \'(\', \')\'), array(\"\\n\", \'\"\', \''\', \'(\', \')\'), trim(\'${1}\')).\'[/center:$uid]\'', '!\\[center:$uid\\](.*?)\\[/center:$uid\\]!s', '<div style=\"text-align:center;\">${1}</div>');
Видимо, отн потом просто преображает данный модификатор в что-то иное. И не в ту степь копали - не нужно было передобавлять теги. Нужно заставить также преобразовывать модификатор.
Отправлено спустя 35 минут 32 секунды:
Это, полходу, фукция для includes/message_parser.php, взятая мной из https://bitbucket.org/Sumanai/phpbbex-2 ... 1a5b11afb7 должна модификатор заменять:
Код: Выделить всё
if (is_callable($replacement))
+						{
+							$this->message = preg_replace_callback($regexp, $replacement, $this->message);
+						}
+						// @todo REMOVE for 3.2.0 
+						else if (version_compare(PHP_VERSION, '7.0.0', '>='))
+						{
+							$regexp_modifiers = preg_replace('/!(.*)!([a-z]*)/', '$2', $regexp);
+							if (strpos($regexp_modifiers, 'e') !== false)
+							{
+								$regexp = preg_replace('/!(.*)!([a-z]*)/', '!$1!', $regexp);
+								$this->message = preg_replace_callback(
+									$regexp . str_replace('e', '', $regexp_modifiers),
+									create_lambda('$matches', 'return ' . preg_replace('#\$\{([\d])\}#ui', '\'.$matches[$1].\'', str_replace('$this->', '', $replacement)) . ';'),
+									$this->message
+								);
+							}
+							else
+							{
+								$this->message = preg_replace($regexp, $replacement, $this->message);
+							}
+						}
+						else
+						{
+							$this->message = preg_replace($regexp, $replacement, $this->message);
+						}
Код: Выделить всё
$this->message = preg_replace($regexp, $replacement, $this->message);
Код: Выделить всё
+/**
+* Caching for create_function
+* @todo REMOVE for 3.2.0 
+*/
+function create_lambda($args, $code) {
+	static $func;
+	if (!isset($func[$args][$code])) {
+		$func[$args][$code] = create_function($args, $code);
+	}
+	return $func[$args][$code];
+}
- 
				Татьяна5  
- Поддержка 
- Сообщения: 12855
- Стаж: 14 лет 2 месяца
- Благодарил (а): 160 раз
- Поблагодарили: 2328 раз
Re: Как приучить к PHP 7.2?
В 3.2 тот код вообще не задействован, он оставлен для обратной совместимости. Там другой обработчик ббкодовLCFSCS писал(а): 31.12.2018 0:11 Видимо, он потом просто преображает данный модификатор в что-то иное
- 
				LCFSCS
- phpBB 1.2.1
- Сообщения: 23
- Стаж: 6 лет 10 месяцев
- Благодарил (а): 2 раза
Re: Как приучить к PHP 7.2?
В 3.2 он также пихает в базу своих тегов модификаторы e. В моём предыдущем сообщении база бб-кодов VALUES (13, 'c'... из нулёвого чистого phpBB 3.2.4 установленного на чистую базу и без любых модификаций кода - это я ради теста добавил два своих кода, сохранил таблицу с этими кодами и открыл её.Татьяна5 писал(а): 31.12.2018 0:56 В 3.2 тот код вообще не задействован, он оставлен для обратной совместимости. Там другой обработчик ббкодов
Тот код - из инструкции по ссылке по приучению к PHP 7. Я имел в виду, что с помощью похожей функции можно реализовать "переделывание" модификаторов.
- 
				Татьяна5  
- Поддержка 
- Сообщения: 12855
- Стаж: 14 лет 2 месяца
- Благодарил (а): 160 раз
- Поблагодарили: 2328 раз
- 
				LCFSCS
- phpBB 1.2.1
- Сообщения: 23
- Стаж: 6 лет 10 месяцев
- Благодарил (а): 2 раза
Re: Как приучить к PHP 7.2?
Код: Выделить всё
/**
	* Parse BBCode
	*/
	function parse_bbcode()
	{
		if (!$this->bbcodes)
		{
			$this->bbcode_init();
		}
		global $user;
		$this->bbcode_bitfield = '';
		$bitfield = new bitfield();
		foreach ($this->bbcodes as $bbcode_name => $bbcode_data)
		{
			if (isset($bbcode_data['disabled']) && $bbcode_data['disabled'])
			{
				foreach ($bbcode_data['regexp'] as $regexp => $replacement)
				{
					if (preg_match($regexp, $this->message))
					{
						$this->warn_msg[] = sprintf($user->lang['UNAUTHORISED_BBCODE'] , '[' . $bbcode_name . ']');
						continue;
					}
				}
			}
			else
			{
				foreach ($bbcode_data['regexp'] as $regexp => $replacement)
				{
					// The pattern gets compiled and cached by the PCRE extension,
					// it should not demand recompilation
					if (preg_match($regexp, $this->message))
					{
						if (is_callable($replacement))
						{
							$this->message = preg_replace_callback($regexp, $replacement, $this->message);
						}
						else
						{
							$this->message = preg_replace($regexp, $replacement, $this->message);
						}
						$bitfield->set($bbcode_data['bbcode_id']);
					}
				}
			}
		}
		$this->bbcode_bitfield = $bitfield->get_base64();
	}
Код: Выделить всё
						else
						{
							$this->message = preg_replace($regexp, $replacement, $this->message);
						}
Если не убирать, то обрабатываются все BB-теги, но получаем ошибку из-за модификаторов из базы своих тегов.
Надо как-то убрать из $this->message = preg_replace модификаторы е - это либо перед данной функцией запихать функцию замены модификаторов, либо прикрутить s9e/textformatter. Вот голову и ломаю, как сие сотварить...
С s9e/textformatter наверно не получится...
- 
				nissin  
- phpBB 3.0.4
- Сообщения: 2224
- Стаж: 17 лет 10 месяцев
- Откуда: Павлодар
- Благодарил (а): 2 раза
- Поблагодарили: 121 раз
Re: Как приучить к PHP 7.2?
Какая ошибка то?LCFSCS писал(а): 31.12.2018 0:11 Но она у меня вызывает ошибку. Правда я добавил функцию create_lambda не в конец (как в источнике), а после функции function bbcode_specialchars($text), которая уже есть - может быть из-за этого ошибка?
- 
				LCFSCS
- phpBB 1.2.1
- Сообщения: 23
- Стаж: 6 лет 10 месяцев
- Благодарил (а): 2 раза
Re: Как приучить к PHP 7.2?
Да уже не важно. Сделал я - всё работает.
Сначала решил воссоздать то, что в инструкции. Но получил синтаксическую ошибку в bbcode.php на последней строке файла ( ?php> ) - ясно, что не в этой строке дело...
Потом "смешал" своё и из инструкции и получил рабочий вариант - обрабатываются и новые теги, и старые (все - включая HIDE), не нужны ни какие манипуляции (перепарсинги, передобавления тегов, ковыряния в базе) - только заменить файлы (точнее код в файлах).
Протестю всё на трёх версиях PHP (5.6, 7.0, 7.2) и выложу полную инструкцию.
Спасибо всем, кто помогал или пытался помочь...
- 
				LCFSCS
- phpBB 1.2.1
- Сообщения: 23
- Стаж: 6 лет 10 месяцев
- Благодарил (а): 2 раза
Re: Как приучить к PHP 7.2?
Идеально работает на PHP 5.6 и PHP 7.0. На PHP 7.2 будете получать ошибки вида: Parameter must be an array or an object that implements Countable - но это уже сами допиливайте (руки бы оторвал - зачем постоянно убирать старые возможности из новых версий, а не сделать абсолютную совместимость?). Мне нужно несколько месяцев переконтоваться на PHP 7.0, после чего убежать с хостинга на сервер, где выставить нужную мне версию PHP, откатить до оригинальных файлов и забыть как страшный сон все эти обновления и допиливания.
К форуму прикручены prime links и свои теги, включая HIDE. Всё идеально работает на PHP 5.6 и PHP 7.0.
В версиях без данных "дополнений" и в других версиях код файлов может отличаться - но принцип тот же.
Всё закоментировано, чтобы потом можно было найти, изменить или вернуть к исходному коду. Обратите внимание, что в co*de и fl*ash добавлены звёздочи, чтобы данный форум нормально отображал код - эти звёздочки нужно будет убрать.
Файл /includes/acp/acp_bbcodes.php
Найти:
Код: Выделить всё
					$replace = preg_replace('/(?<!\\\\)\$([0-9]+)/e', "'\${' . (\$1 + \$pad) . '}'", $replace);
Код: Выделить всё
					/**
					* Старая функция
					$replace = preg_replace('/(?<!\\\\)\$([0-9]+)/e', "'\${' . (\$1 + \$pad) . '}'", $replace);
					* Старая функция кончилась
					*/
					
					/**
					* Замена
					*/
					$replace = preg_replace_callback('/(?<!\\\\)\$([0-9]+)/', function ($match) use ($pad) {
						return '${' . ($match[1] + $pad) . '}';
					}, $replace);
					/**
					* Замена кончилась
					*/
Код: Выделить всё
		$fp_match = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $fp_match);
		$fp_replace = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $fp_replace);
		$sp_match = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $sp_match);
		$sp_replace = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $sp_replace);
Код: Выделить всё
		/**
		* Старая функция
		$fp_match = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $fp_match);
		$fp_replace = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $fp_replace);
		$sp_match = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $sp_match);
		$sp_replace = preg_replace('#\[/?' . $bbcode_search . '#ie', "strtolower('\$0')", $sp_replace);
		* Старая функция кончилась
		*/
		
		/**
		* Замена
		*/
		$fp_match = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
			return strtolower($match[0]);
		}, $fp_match);
		$fp_replace = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
			return strtolower($match[0]);
		}, $fp_replace);
		$sp_match = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
			return strtolower($match[0]);
		}, $sp_match);
		$sp_replace = preg_replace_callback('#\[/?' . $bbcode_search . '#i', function ($match) {
			return strtolower($match[0]);
		}, $sp_replace);
		/**
		* Замена кончилась
		*/
Найти 5 таких одинаковых строк:
Код: Выделить всё
					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
Код: Выделить всё
					/**
					* Старая функция
					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
					* Старая функция кончилась
					*/
					/**
					* Замена
					*/
					$error = array_map(array($user, 'lang'), $error);
					/**
					* Замена кончилась
					*/
Файл /includes/bbcode.php
Найти:
Код: Выделить всё
						$message = preg_replace($preg['search'], $preg['replace'], $message);
Код: Выделить всё
						/**
						* Старая функция
						$message = preg_replace($preg['search'], $preg['replace'], $message);
						* Старая функция кончилась
						*/
						
						/**
						* Замена
						*/
						foreach ($preg['search'] as $key => $search)
						{
							if (is_callable($preg['replace'][$key]))
							{
								$message = preg_replace_callback($search, $preg['replace'][$key], $message);
							}
							else
							{
								$message = preg_replace($search, $preg['replace'][$key], $message);
							}
						}
						/**
						* Замена концичась
						*/
Код: Выделить всё
							'#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#ise'	=> "\$this->bbcode_second_pass_quote('\$1', '\$2')"
Код: Выделить всё
							/**
							* Замена
							*/
							'#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#is'	=> function ($match) {
								if (!isset($match[2]))
								{
									$match[2] = '';
								}
								return $this->bbcode_second_pass_quote($match[1], $match[2]);
							},
							/**
							* Замена кончилась
							*/
							
							/**
							* Старая функция
							'#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#ise'	=> "\$this->bbcode_second_pass_quote('\$1', '\$2')"							
							* Старая функция кончилась
							*/
Код: Выделить всё
							'#\[co*de(?:=([a-z]+))?:$uid\](.*?)\[/co*de:$uid\]#ise'	=> "\$this->bbcode_second_pass_code('\$1', '\$2')",
Код: Выделить всё
							/**
							* Замена
							*/
							'#\[co*de(?:=([a-z]+))?:$uid\](.*?)\[/co*de:$uid\]#is'	=> function ($match) {
								return $this->bbcode_second_pass_code($match[1], $match[2]);
							},
							/**
							* Замена кончилась
							*/
							
							/**
							* Старая функция
							'#\[co*de(?:=([a-z]+))?:$uid\](.*?)\[/co*de:$uid\]#ise'	=> "\$this->bbcode_second_pass_code('\$1', '\$2')",
							* Старая функция кончилась
							*/
Код: Выделить всё
							'#\[list=([^\[]+):$uid\]#e'					=> "\$this->bbcode_list('\$1')",
Код: Выделить всё
							/**
							* Замена
							*/
							'#\[list=([^\[]+):$uid\]#'					=> function ($match) {
								return $this->bbcode_list($match[1]);
							},
							/**
							* Замена кончилась
							*/
							
							/**
							* Старая функция
							'#\[list=([^\[]+):$uid\]#e'					=> "\$this->bbcode_list('\$1')",
							* Старая функция кончилась
							*/
Код: Выделить всё
						$bbcode_tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $bbcode_tpl);
Код: Выделить всё
						/**
						* старая функция
						$bbcode_tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $bbcode_tpl);
						* старая функция кончилась
						*/
						
						/**
						* Замена
						*/
						$bbcode_tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($user) {
							return (!empty($user->lang[$match[1]])) ? $user->lang($match[1]) : ucwords(strtolower(str_replace('_', ' ', $match[1])));
						}, $bbcode_tpl);
						
						/**
						* Замена кончилась
						*/
Код: Выделить всё
	function bbcode_tpl_replace($tpl_name, $tpl)
	{
		global $user;
		static $replacements = array(
			'quote_username_open'	=> array('{USERNAME}'	=> '$1'),
			'color'					=> array('{COLOR}'		=> '$1', '{TEXT}'			=> '$2'),
			'size'					=> array('{SIZE}'		=> '$1', '{TEXT}'			=> '$2'),
			'img'					=> array('{URL}'		=> '$1'),
			'flash'					=> array('{WIDTH}'		=> '$1', '{HEIGHT}'			=> '$2', '{URL}'	=> '$3'),
			'url'					=> array('{URL}'		=> '$1', '{DESCRIPTION}'	=> '$2'),
			'email'					=> array('{EMAIL}'		=> '$1', '{DESCRIPTION}'	=> '$2')
		);
		$tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $tpl);
		if (!empty($replacements[$tpl_name]))
		{
			$tpl = strtr($tpl, $replacements[$tpl_name]);
		}
		return trim($tpl);
	}
Код: Выделить всё
	/**
	* Старая функция
	function bbcode_tpl_replace($tpl_name, $tpl)
	{
		global $user;
		static $replacements = array(
			'quote_username_open'	=> array('{USERNAME}'	=> '$1'),
			'color'					=> array('{COLOR}'		=> '$1', '{TEXT}'			=> '$2'),
			'size'					=> array('{SIZE}'		=> '$1', '{TEXT}'			=> '$2'),
			'img'					=> array('{URL}'		=> '$1'),
			'flash'					=> array('{WIDTH}'		=> '$1', '{HEIGHT}'			=> '$2', '{URL}'	=> '$3'),
			'url'					=> array('{URL}'		=> '$1', '{DESCRIPTION}'	=> '$2'),
			'email'					=> array('{EMAIL}'		=> '$1', '{DESCRIPTION}'	=> '$2')
		);
		$tpl = preg_replace('/{L_([A-Z_]+)}/e', "(!empty(\$user->lang['\$1'])) ? \$user->lang['\$1'] : ucwords(strtolower(str_replace('_', ' ', '\$1')))", $tpl);
		if (!empty($replacements[$tpl_name]))
		{
			$tpl = strtr($tpl, $replacements[$tpl_name]);
		}
		return trim($tpl);
	}
	* Старая функция кончилась
	*/
	
	/**
	* Замена
	*/
	function bbcode_tpl_replace($tpl_name, $tpl)
	{
		global $user;
		static $replacements = array(
			'quote_username_open'	=> array('{USERNAME}'	=> '$1'),
			'color'					=> array('{COLOR}'		=> '$1', '{TEXT}'			=> '$2'),
			'size'					=> array('{SIZE}'		=> '$1', '{TEXT}'			=> '$2'),
			'img'					=> array('{URL}'		=> '$1'),
			'flash'					=> array('{WIDTH}'		=> '$1', '{HEIGHT}'			=> '$2', '{URL}'	=> '$3'),
			'url'					=> array('{URL}'		=> '$1', '{DESCRIPTION}'	=> '$2'),
			'email'					=> array('{EMAIL}'		=> '$1', '{DESCRIPTION}'	=> '$2')
		);
		$tpl = preg_replace_callback('/{L_([A-Z0-9_]+)}/', function ($match) use ($user) {
			return (!empty($user->lang[$match[1]])) ? $user->lang($match[1]) : ucwords(strtolower(str_replace('_', ' ', $match[1])));
		}, $tpl);
		if (!empty($replacements[$tpl_name]))
		{
			$tpl = strtr($tpl, $replacements[$tpl_name]);
		}
		return trim($tpl);
	}
	/**
	* Замена кончилась
	*/
Код: Выделить всё
}
?>
Код: Выделить всё
	/**
	* Добавление без замены
	*/
	
	/**
	* Function to perform custom bbcode second pass by extensions
	* can be used to assign bbcode pattern replacement
	* Example: '#\[list=([^\[]+):$uid\]#e'	=> "\$this->bbcode_second_pass_by_extension('\$1')"
	*
	* Accepts variable number of parameters
	*
	* @return mixed Second pass result
	*/
	function bbcode_second_pass_by_extension()
	{
		global $phpbb_dispatcher;
		$return = false;
		$params_array = func_get_args();
		/**
		* Event to perform bbcode second pass with
		* the custom validating methods provided by extensions
		*
		* @event core.bbcode_second_pass_by_extension
		* @var array	params_array	Array with the function parameters
		* @var mixed	return			Second pass result to return
		*
		* @since 3.1.5-RC1
		*/
		$vars = array('params_array', 'return');
		extract($phpbb_dispatcher->trigger_event('core.bbcode_second_pass_by_extension', compact($vars)));
		return $return;
	}
	
	/**
	* Добавление без замены кончилось
	*/
Найти:
Код: Выделить всё
						$this->message = preg_replace($regexp, $replacement, $this->message);
Код: Выделить всё
						/**
						* Старая функция
						$this->message = preg_replace($regexp, $replacement, $this->message);
						* Старая функция кончилась
						*/
						/**
						* Замена
						*/
						if (is_callable($replacement))
						{
							$this->message = preg_replace_callback($regexp, $replacement, $this->message);
						}
						// @todo REMOVE for 3.2.0 
						else if (version_compare(PHP_VERSION, '7.0.0', '>='))
						{
							$regexp_modifiers = preg_replace('/!(.*)!([a-z]*)/', '$2', $regexp);
							if (strpos($regexp_modifiers, 'e') !== false)
							{
								$regexp = preg_replace('/!(.*)!([a-z]*)/', '!$1!', $regexp);
								$this->message = preg_replace_callback(
									$regexp . str_replace('e', '', $regexp_modifiers),
									create_lambda('$matches', 'return ' . preg_replace('#\$\{([\d])\}#ui', '\'.$matches[$1].\'', str_replace('$this->', '', $replacement)) . ';'),
									$this->message
								);
							}
							else
							{
								$this->message = preg_replace($regexp, $replacement, $this->message);
							}
						}
						else
						{
							$this->message = preg_replace($regexp, $replacement, $this->message);
						}
						/**
						* Замена кончилась
						*/
Код: Выделить всё
	function bbcode_init($allow_custom_bbcode = true)
	{
		static $rowset;
Код: Выделить всё
	function bbcode_init($allow_custom_bbcode = true)
	{
		static $rowset;
		/**
		* Замена без старой функции - добавление
		*/
		$bbcode_class = $this;
		/**
		* Замена кончилась
		*/
Код: Выделить всё
			'code'			=> array('bbcode_id' => 8,	'regexp' => array('#\[co*de(?:=([a-z]+))?\](.+\[/co*de\])#uise' => "\$this->bbcode_code('\$1', '\$2')")),
			'quote'			=> array('bbcode_id' => 0,	'regexp' => array('#\[quote(?:="(.*?)")?\](.+)\[/quote\]#uise' => "\$this->bbcode_quote('\$0')")),
			'attachment'	=> array('bbcode_id' => 12,	'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#uise' => "\$this->bbcode_attachment('\$1', '\$2')")),
			'b'				=> array('bbcode_id' => 1,	'regexp' => array('#\[b\](.*?)\[/b\]#uise' => "\$this->bbcode_strong('\$1')")),
			'i'				=> array('bbcode_id' => 2,	'regexp' => array('#\[i\](.*?)\[/i\]#uise' => "\$this->bbcode_italic('\$1')")),
			'url'			=> array('bbcode_id' => 3,	'regexp' => array('#\[url(=(.*))?\](?(1)((?s).*(?-s))|(.*))\[/url\]#uiUe' => "\$this->validate_url('\$2', ('\$3') ? '\$3' : '\$4')")),
			'img'			=> array('bbcode_id' => 4,	'regexp' => array('#\[img\](.*)\[/img\]#uiUe' => "\$this->bbcode_img('\$1')")),
			'size'			=> array('bbcode_id' => 5,	'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#uise' => "\$this->bbcode_size('\$1', '\$2')")),
			'color'			=> array('bbcode_id' => 6,	'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!uise' => "\$this->bbcode_color('\$1', '\$2')")),
			'u'				=> array('bbcode_id' => 7,	'regexp' => array('#\[u\](.*?)\[/u\]#uise' => "\$this->bbcode_underline('\$1')")),
			'list'			=> array('bbcode_id' => 9,	'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#uise' => "\$this->bbcode_parse_list('\$0')")),
			'email'			=> array('bbcode_id' => 10,	'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#uise' => "\$this->validate_email('\$1', '\$2')")),
			'flash'			=> array('bbcode_id' => 11,	'regexp' => array('#\[fl*ash=([0-9]+),([0-9]+)\](.*?)\[/fl*ash\]#uie' => "\$this->bbcode_flash('\$1', '\$2', '\$3')"))
Код: Выделить всё
		/**
		* Старая функция
			'code'			=> array('bbcode_id' => 8,	'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#uise' => "\$this->bbcode_code('\$1', '\$2')")),
			'quote'			=> array('bbcode_id' => 0,	'regexp' => array('#\[quote(?:="(.*?)")?\](.+)\[/quote\]#uise' => "\$this->bbcode_quote('\$0')")),
			'attachment'	=> array('bbcode_id' => 12,	'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#uise' => "\$this->bbcode_attachment('\$1', '\$2')")),
			'b'				=> array('bbcode_id' => 1,	'regexp' => array('#\[b\](.*?)\[/b\]#uise' => "\$this->bbcode_strong('\$1')")),
			'i'				=> array('bbcode_id' => 2,	'regexp' => array('#\[i\](.*?)\[/i\]#uise' => "\$this->bbcode_italic('\$1')")),
			'url'			=> array('bbcode_id' => 3,	'regexp' => array('#\[url(=(.*))?\](?(1)((?s).*(?-s))|(.*))\[/url\]#uiUe' => "\$this->validate_url('\$2', ('\$3') ? '\$3' : '\$4')")),
			'img'			=> array('bbcode_id' => 4,	'regexp' => array('#\[img\](.*)\[/img\]#uiUe' => "\$this->bbcode_img('\$1')")),
			'size'			=> array('bbcode_id' => 5,	'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#uise' => "\$this->bbcode_size('\$1', '\$2')")),
			'color'			=> array('bbcode_id' => 6,	'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!uise' => "\$this->bbcode_color('\$1', '\$2')")),
			'u'				=> array('bbcode_id' => 7,	'regexp' => array('#\[u\](.*?)\[/u\]#uise' => "\$this->bbcode_underline('\$1')")),
			'list'			=> array('bbcode_id' => 9,	'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#uise' => "\$this->bbcode_parse_list('\$0')")),
			'email'			=> array('bbcode_id' => 10,	'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#uise' => "\$this->validate_email('\$1', '\$2')")),
			'flash'			=> array('bbcode_id' => 11,	'regexp' => array('#\[fl*ash=([0-9]+),([0-9]+)\](.*?)\[/fl*ash\]#uie' => "\$this->bbcode_flash('\$1', '\$2', '\$3')"))
			
		* Старая функция кончилась
		*/
			/**
			* Замена
			*/
			
			'code'			=> array('bbcode_id' => 8,	'regexp' => array('#\[co*de(?:=([a-z]+))?\](.+\[/co*de\])#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_code($match[1], $match[2]);
				}
			)),
			'quote'			=> array('bbcode_id' => 0,	'regexp' => array('#\[quote(?:="(.*?)")?\](.+)\[/quote\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_quote($match[0], 'quote');
				}
			)),
			'attachment'	=> array('bbcode_id' => 12,	'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_attachment($match[1], $match[2]);
				}
			)),
			'b'				=> array('bbcode_id' => 1,	'regexp' => array('#\[b\](.*?)\[/b\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_strong($match[1]);
				}
			)),
			'i'				=> array('bbcode_id' => 2,	'regexp' => array('#\[i\](.*?)\[/i\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_italic($match[1]);
				}
			)),
			'url'			=> array('bbcode_id' => 3,	'regexp' => array('#\[url(=(.*))?\](?(1)((?s).*(?-s))|(.*))\[/url\]#uiU' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->validate_url($match[2], ($match[3]) ? $match[3] : $match[4]);
				}
			)),
			'img'			=> array('bbcode_id' => 4,	'regexp' => array('#\[img\](.*)\[/img\]#uiU' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_img($match[1]);
				}
			)),
			'size'			=> array('bbcode_id' => 5,	'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_size($match[1], $match[2]);
				}
			)),
			'color'			=> array('bbcode_id' => 6,	'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_color($match[1], $match[2]);
				}
			)),
			'u'				=> array('bbcode_id' => 7,	'regexp' => array('#\[u\](.*?)\[/u\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_underline($match[1]);
				}
			)),
			'list'			=> array('bbcode_id' => 9,	'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_parse_list($match[0]);
				}
			)),
			'email'			=> array('bbcode_id' => 10,	'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#uis' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->validate_email($match[1], $match[2]);
				}
			)),
			'flash'			=> array('bbcode_id' => 11,	'regexp' => array('#\[fl*ash=([0-9]+),([0-9]+)\](.*?)\[/fl*ash\]#ui' => function ($match) use($bbcode_class)
				{
					return $bbcode_class->bbcode_flash($match[1], $match[2], $match[3]);
				}
			))		
			/**
			* Замена кончилась
			*/
Код: Выделить всё
		$in = preg_replace('#quote="(.*?)"\]#ie', "'quote="' . str_replace(array('[', ']', '\\\"'), array('[', ']', '\"'), '\$1') . '"]'", $in);
Код: Выделить всё
		/**
		* Старая функция
		$in = preg_replace('#quote="(.*?)"\]#ie', "'quote="' . str_replace(array('[', ']', '\\\"'), array('[', ']', '\"'), '\$1') . '"]'", $in);
		* Старая функция кончилась
		*/
		/**
		* Замена
		*/
		$in = preg_replace_callback('#quote="(.*?)"\]#i', function ($match) {
			return 'quote="' . str_replace(array('[', ']', '\\\"'), array('[', ']', '\"'), $match[1]) . '"]';
		}, $in);
		/**
		* Замена кончилась
		*/
Код: Выделить всё
					$this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);
Код: Выделить всё
					/**
					* Старая функция
					$this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);
					* Старая функция кончилась
					*/
					/**
					* Замена
					*/
					$this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) {
						return '[attachment='.($match[1] + 1).']' . $match[2] . '[/attachment]';
					}, $this->message);
					/**
					* Замена кончилась
					*/
Код: Выделить всё
					$this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "(\\1 == \$index) ? '' : ((\\1 > \$index) ? '[attachment=' . (\\1 - 1) . ']\\2[/attachment]' : '\\0')", $this->message);
Код: Выделить всё
					/**
					* Старая функция
					$this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "(\\1 == \$index) ? '' : ((\\1 > \$index) ? '[attachment=' . (\\1 - 1) . ']\\2[/attachment]' : '\\0')", $this->message);
					* Старая функция кончилась
					*/
					/**
					* Замена
					*/
					$this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) use($index) {
						return ($match[1] == $index) ? '' : (($match[1] > $index) ? '[attachment=' . ($match[1] - 1) . ']' . $match[2] . '[/attachment]' : $match[0]);
					}, $this->message);
					/**
					* Замена кончилась
					*/
Код: Выделить всё
						$this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);
Код: Выделить всё
						/**
						* Старая функция
						$this->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#e', "'[attachment='.(\\1 + 1).']\\2[/attachment]'", $this->message);
						* Старая функция кончилась
						*/
						/**
						* Замена
						*/
						$this->message = preg_replace_callback('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#', function ($match) {
							return '[attachment=' . ($match[1] + 1) . ']' . $match[2] . '[/attachment]';
						}, $this->message);
						/**
						* Замена кончилась
						*/
Код: Выделить всё
?>
Код: Выделить всё
/**
* Добалление без замены
*/
/**
* Transform some characters in valid bbcodes
* Called from preg_replace_callback function
* @todo REMOVE for 3.2.0 
*/
function bbcode_specialchars($text)
{
	$str_from = array('<', '>', '[', ']', '.', ':');
	$str_to = array('<', '>', '[', ']', '.', ':');
	return str_replace($str_from, $str_to, $text);
}
/**
* Caching for create_function
* @todo REMOVE for 3.2.0 
*/
function create_lambda($args, $code) {
	static $func;
	if (!isset($func[$args][$code])) {
		$func[$args][$code] = create_function($args, $code);
	}
	return $func[$args][$code];
}
/**
* Добалление без замены кончилось
*/
?>
Найти:
Код: Выделить всё
			$text = preg_replace('/&#(\d+);/me', 'chr($1)', $text);			 //decimal notation
			$text = preg_replace('/&#x([a-f0-9]+);/mei', 'chr(0x$1)', $text);	//hex notation
Код: Выделить всё
			/**
			* Старая функция
			$text = preg_replace('/&#(\d+);/me', 'chr($1)', $text);			 //decimal notation
			$text = preg_replace('/&#x([a-f0-9]+);/mei', 'chr(0x$1)', $text);	//hex notation
			* Старая функция кончилась
			*/
			/**
			* Замена
			*/
			$text = preg_replace_callback('/&#(\d+);/m', function ($matches) {return chr($matches[1]);}, $text);	//decimal notation
			$text = preg_replace_callback('/&#x([a-f0-9]+);/mi', function ($matches) {return chr('0x' . $matches[1]);}, $text);	//hex notation
			/**
			* Замена кончилась
			*/
Найти:
Код: Выделить всё
function make_clickable($text, $server_url = false, $class = 'postlink')
{
	if ($server_url === false)
	{
		$server_url = generate_board_url();
	}
	static $magic_url_match;
	static $magic_url_replace;
	static $static_class;
	if (!is_array($magic_url_match) || $static_class != $class)
	{
		$static_class = $class;
		$class = ($static_class) ? ' class="' . $static_class . '"' : '';
		$local_class = ($static_class) ? ' class="' . $static_class . '-local"' : '';
		$magic_url_match = $magic_url_replace = array();
		// Be sure to not let the matches cross over. ;)
		// relative urls for this board
		$magic_url_match[] = '#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_LOCAL, '\$1', '\$2', '\$3', '$local_class')";
		// matches a xxxx://aaaaa.bbb.cccc. ...
		$magic_url_match[] = '#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_FULL, '\$1', '\$2', '', '$class')";
		// matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing
		$magic_url_match[] = '#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_WWW, '\$1', '\$2', '', '$class')";
		// matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode.
		$magic_url_match[] = '/(^|[\n\t (>])(' . get_preg_expression('email') . ')/ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_EMAIL, '\$1', '\$2', '', '')";
	}
	return preg_replace($magic_url_match, $magic_url_replace, $text);
}
Код: Выделить всё
/**
* Старая функция
function make_clickable($text, $server_url = false, $class = 'postlink')
{
	if ($server_url === false)
	{
		$server_url = generate_board_url();
	}
	static $magic_url_match;
	static $magic_url_replace;
	static $static_class;
	if (!is_array($magic_url_match) || $static_class != $class)
	{
		$static_class = $class;
		$class = ($static_class) ? ' class="' . $static_class . '"' : '';
		$local_class = ($static_class) ? ' class="' . $static_class . '-local"' : '';
		$magic_url_match = $magic_url_replace = array();
		// Be sure to not let the matches cross over. ;)
		// relative urls for this board
		$magic_url_match[] = '#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_LOCAL, '\$1', '\$2', '\$3', '$local_class')";
		// matches a xxxx://aaaaa.bbb.cccc. ...
		$magic_url_match[] = '#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_FULL, '\$1', '\$2', '', '$class')";
		// matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing
		$magic_url_match[] = '#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_WWW, '\$1', '\$2', '', '$class')";
		// matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode.
		$magic_url_match[] = '/(^|[\n\t (>])(' . get_preg_expression('email') . ')/ie';
		$magic_url_replace[] = "make_clickable_callback(MAGIC_URL_EMAIL, '\$1', '\$2', '', '')";
	}
	return preg_replace($magic_url_match, $magic_url_replace, $text);
}
* Старая функция кончилась
*/
/**
* Замена
*/
function make_clickable($text, $server_url = false, $class = 'postlink')
{
	if ($server_url === false)
	{
		$server_url = generate_board_url();
	}
	static $static_class;
	static $magic_url_match_args;
	if (!isset($magic_url_match_args[$server_url]) || $static_class != $class)
	{
		$static_class = $class;
		$class = ($static_class) ? ' class="' . $static_class . '"' : '';
		$local_class = ($static_class) ? ' class="' . $static_class . '-local"' : '';
		if (!is_array($magic_url_match_args))
		{
			$magic_url_match_args = array();
		}
		// relative urls for this board
		$magic_url_match_args[$server_url][] = array(
			'#(^|[\n\t (>.])(' . preg_quote($server_url, '#') . ')/(' . get_preg_expression('relative_url_inline') . ')#iu',
			MAGIC_URL_LOCAL,
			$local_class,
		);
		// matches a xxxx://aaaaa.bbb.cccc. ...
		$magic_url_match_args[$server_url][] = array(
			'#(^|[\n\t (>.])(' . get_preg_expression('url_inline') . ')#iu',
			MAGIC_URL_FULL,
			$class,
		);
		// matches a "www.xxxx.yyyy[/zzzz]" kinda lazy URL thing
		$magic_url_match_args[$server_url][] = array(
			'#(^|[\n\t (>])(' . get_preg_expression('www_url_inline') . ')#iu',
			MAGIC_URL_WWW,
			$class,
		);
		// matches an email@domain type address at the start of a line, or after a space or after what might be a BBCode.
		$magic_url_match_args[$server_url][] = array(
			'/(^|[\n\t (>])(' . get_preg_expression('email') . ')/iu',
			MAGIC_URL_EMAIL,
			'',
		);
	}
	foreach ($magic_url_match_args[$server_url] as $magic_args)
	{
		if (preg_match($magic_args[0], $text, $matches))
		{
			$text = preg_replace_callback($magic_args[0], function($matches) use ($magic_args)
			{
				$relative_url = isset($matches[3]) ? $matches[3] : '';
				return make_clickable_callback($magic_args[1], $matches[1], $matches[2], $relative_url, $magic_args[2]);
			}, $text);
		}
	}
	return $text;
}
/**
* Замена кончилась
*/
Найти:
Код: Выделить всё
	preg_replace('#^((RULE|ACTION|CHECK)_([A-Z0-9_]+))$#e', "\${strtolower('\\2') . '_lang'}[constant('\\1')] = \$user->lang['PM_\\2']['\\3']", array_keys(get_defined_constants()));
Код: Выделить всё
	/**
	* Старая функция
	preg_replace('#^((RULE|ACTION|CHECK)_([A-Z0-9_]+))$#e', "\${strtolower('\\2') . '_lang'}[constant('\\1')] = \$user->lang['PM_\\2']['\\3']", array_keys(get_defined_constants()));
	* Старая функция кончилась
	*/
	/**
	* Замена
	*/
	preg_replace_callback('#^((RULE|ACTION|CHECK)_([A-Z0-9_]+))$#', function ($match) use(&$rule_lang, &$action_lang, &$check_lang, $user) {
		${strtolower($match[2]) . '_lang'}[constant($match[1])] = $user->lang['PM_' . $match[2]][$match[3]];
	}, array_keys(get_defined_constants()));
	/**
	* Замена кончилась
	*/
Найти 2 строки с кодом:
Код: Выделить всё
					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
Код: Выделить всё
					/**
					* Старая функция
					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
					* Старая функция кончилась
					*/
					/**
					* Замена
					*/
					$error = array_map(array($user, 'lang'), $error);
					/**
					* Замена кончилась
					*/
Найти 4 строки с кодом:
Код: Выделить всё
					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
Код: Выделить всё
					/**
					* Старая функция
					$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
					* Старая функция кончилась
					*/
					/**
					* Замена
					*/
					$error = array_map(array($user, 'lang'), $error);
					/**
					* Замена кончилась
					*/
Найти:
Код: Выделить всё
			$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
Код: Выделить всё
			/**
			* Старая функция
			$error = preg_replace('#^([A-Z_]+)$#e', "(!empty(\$user->lang['\\1'])) ? \$user->lang['\\1'] : '\\1'", $error);
			* Старая функция кончилась
			*/
			/**
			* Замена
			*/
			$error = array_map(array($user, 'lang'), $error);
			/**
			* Замена кончилась
			*/
Найти:
Код: Выделить всё
		$instance =& new phpbb_captcha_gd();
Код: Выделить всё
		/**
		* Старая функция
		$instance =& new phpbb_captcha_gd();
		* Старая функция кончилась
		*/
		/**
		* Замена
		*/
		$instance = new phpbb_captcha_gd();
		/**
		* Замена кончилась
		*/
Найти:
Код: Выделить всё
		$instance =& new phpbb_captcha_nogd();
Код: Выделить всё
		/**
		* Старая функция
		$instance =& new phpbb_captcha_nogd();
		* Старая функция кончилась
		*/
		/**
		* Замена
		*/
		$instance = new phpbb_captcha_nogd();
		/**
		* Замена кончилась
		*/
Найти:
Код: Выделить всё
		$instance =& new phpbb_captcha_qa();
Код: Выделить всё
		/**
		* Старая функция
		$instance =& new phpbb_captcha_qa();
		* Старая функция кончилась
		*/
		/**
		* Замена
		*/
		$instance = new phpbb_captcha_qa();
		/**
		* Замена кончилась
		*/
Найти:
Код: Выделить всё
		$instance =& new phpbb_recaptcha();
Код: Выделить всё
		/**
		* Старая функция
		$instance =& new phpbb_recaptcha();
		* Старая функция кончилась
		*/
		/**
		* Замена
		*/
		$instance = new phpbb_recaptcha();
		/**
		* Замена кончилась
		*/
Код: Выделить всё
php_value mbstring.http_input pass
php_value mbstring.http_output pass
Вот и всё. Удачи... Если найду ещё что-то, что нужно заменить - дополню.
- 
				Shredder
- Former team member
- Сообщения: 2248
- Стаж: 16 лет 10 месяцев
- Благодарил (а): 149 раз
- Поблагодарили: 145 раз
Re: Как приучить к PHP 7.2?
Код: Выделить всё
Error 4096: Object of class template could not be converted to string at file /includes/functions_messenger.php line 212Код: Выделить всё
			$this->tpl_msg[$template_lang . $template_file] = new template();
