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

Оптимизация сообщений

Форум для авторов модов для phpBB 2.0.x.
Аватара пользователя
Гога
phpBB 2.0.0
Сообщения: 220
Стаж: 16 лет 1 месяц
Откуда: Архангельск

Оптимизация сообщений

Сообщение Гога »

Лично меня очень раздражают предложения вида:
"кажется,не всё потеряно.кое-что можно сделать"
Во-первых, с маленькой буквы, во-вторых, пробелов нету.
Я знаю, где это исправить (считается, что мозг и руки посетителя неисправимы):
includes/functions_post.php:prepare_message()

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

	//
	// Clean up the message
	//
	$message = preg_replace('/([:;!?]+) */', '$1 ', $message);
	$message = preg_replace('/([,.]+) *(?=\D)/', '$1 ', $message);
	$message = trim($message);
С регулярными выражениями я ещё поколдую :wink:
Последний раз редактировалось Гога 13.04.2006 14:11, всего редактировалось 3 раза.
Гугл рулит. Я люблю ЛОР.
Интересно, они пришли с миром или им таки нужен наш моск?
Знания принадлежат всему человечеству.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 17 лет 3 месяца
Поблагодарили: 2 раза

Сообщение Xpert »

Для преобразования первой буквы есть ф-я
ucfirst
(PHP 3, PHP 4 , PHP 5)
ucfirst -- Make a string's first character uppercase
Description
string ucfirst ( string str)
Зависима от локали... Плюс, придется разбивать пост на предложения чтобы расставить прописные буквы во всех из них.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Гога
phpBB 2.0.0
Сообщения: 220
Стаж: 16 лет 1 месяц
Откуда: Архангельск

Сообщение Гога »

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

$message = preg_replace('/\.+ *(\w)/e', 'strtoupper($1)', $message);
Вот это работает, только точку съедает :roll:

Добавлено спустя 18 минут 40 секунд:
Xpert писал(а):чтобы расставить прописные буквы
Говорят, что так надо:http://ru.php.net/preg_replace_callback

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

Не, не пойдёт. Ничего не будет работать корректно, особенно это очевидно, если вспомнить про тэг code, где всё должно быть точно, сокращения (т.е., напр.), смайлики...
Но если кому интересно, вот до чего я дописался:

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

	if ($board_config['punctuate_posts'])
	{
/*		$message = preg_replace('/([;!?]+) *(?=\w)/', '$1 ', $message);
		$message = preg_replace('/([,.]+) *(?=\D)/', '$1 ', $message);*/ // FIXME: Do not do this!
/*		$message = preg_replace_callback(
			'/([.!?]+ *\w)/',
			create_function('$m', 'return strtoupper($m[0]);'),
			$message);*/ // FIXME: Do not do this!
	}
Гугл рулит. Я люблю ЛОР.
Интересно, они пришли с миром или им таки нужен наш моск?
Знания принадлежат всему человечеству.
Аватара пользователя
Гога
phpBB 2.0.0
Сообщения: 220
Стаж: 16 лет 1 месяц
Откуда: Архангельск

Сообщение Гога »

Продолжаю борьбу с леньтяями и пофигистами.

Часто в цитатах присутствуют пустые строки в начале или в конце. Я сделал так, что они удаляются при помещении нового сообщения в БД и при показе старых сообщений.

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

--- includes/bbcode.php	(revision 304)
+++ includes/bbcode.php	(revision 306)
@@ -158,12 +158,12 @@
 	$text = bbencode_second_pass_code($text, $uid, $bbcode_tpl);
 
 	// [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff.
-	$text = str_replace("[quote:$uid]", $bbcode_tpl['quote_open'], $text);
-	$text = str_replace("[/quote:$uid]", $bbcode_tpl['quote_close'], $text);
+	$text = preg_replace("/\[quote:$uid\](\n|\r|\s)*/s", $bbcode_tpl['quote_open'], $text);
+	$text = preg_replace("/(\n|\r|\s)*\[\/quote:$uid\]/s", $bbcode_tpl['quote_close'], $text);
 
 	// New one liner to deal with opening quotes with usernames...
 	// replaces the two line version that I had here before..
-	$text = preg_replace("/\[quote:$uid=\"(.*?)\"\]/si", $bbcode_tpl['quote_username_open'], $text);
+	$text = preg_replace("/\[quote:$uid=\"(.*?)\"\](\n|\r|\s)*/s", $bbcode_tpl['quote_username_open'], $text);
 
 	// [list] and [list=x] for (un)ordered lists.
 	// unordered lists
@@ -264,6 +264,8 @@
 	$text = preg_replace("#\[tex\](.*?)\[/tex\]#si", "[tex:$uid]\\1[/tex:$uid]", $text);
 
 	// [QUOTE] and [/QUOTE] for posting replies with quote, or just for quoting stuff.
+	$text = preg_replace("/\[quote(.*?)\](\n|\r|\s)*/s", '[quote\1]', $text);
+	$text = preg_replace("/(\n|\r|\s)*\[\/quote\]/s", '[/quote]', $text);
 	$text = bbencode_first_pass_pda($text, $uid, '[quote]', '[/quote]', '', false, '');
 	$text = bbencode_first_pass_pda($text, $uid, '/\[quote=\\\\"(.*?)\\\\"\]/is', '[/quote]', '', false, '', "[quote:$uid=\\\"\\1\\\"]");
 
Гугл рулит. Я люблю ЛОР.
Интересно, они пришли с миром или им таки нужен наш моск?
Знания принадлежат всему человечеству.
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 16 лет 7 месяцев
Поблагодарили: 13 раз

Сообщение VVVas »

Гога
А вот это надо затестить на неделе. Спасибо.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
MXM
phpBB 2.0.7
Сообщения: 555
Стаж: 16 лет 10 месяцев
Откуда: Санкт-Петербург
Благодарил (а): 1 раз

Сообщение MXM »

Гога, попробывал сделать изменения в файле includes/functions_post.php, добавил предложенный тобой код, чтобы проверить эту ситуацию:
Гога писал(а):"кажется,не всё потеряно.кое-что можно сделать"
Не работает. Вот что я сделал:

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

#
#-----[ OPEN ]------------------------------------------
#
includes/functions_post.php
#
#-----[ FIND ]----------------------------------------
#
	//
	// Clean up the message
	//
	$message = trim($message);

#
#-----[ AFTER ADD ]-----------------------------------
#
твой код.
Правильно?
Аватара пользователя
Гога
phpBB 2.0.0
Сообщения: 220
Стаж: 16 лет 1 месяц
Откуда: Архангельск

Сообщение Гога »

MXM, не могу сказать. Задача про пробелы и большие буквы очень сложная - на грани искусственного интеллекта. Я пока отвлёкся от неё.
Гугл рулит. Я люблю ЛОР.
Интересно, они пришли с миром или им таки нужен наш моск?
Знания принадлежат всему человечеству.

Вернуться в «Для авторов (phpBB 2.0.x)»