Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Re: Re: Re: Re: Re: Re: Re: ... по-моему не удобно.. 
:(
    Опции темы
Ignat
Дата 7.5.2005, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 3
Всего: 73



Sardar, не забудь бубен заговорить smile


--------------------
Теперь при чем :P
PM   Вверх
Wowa
Дата 7.5.2005, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 79
Всего: 290



Цитата(Sardar @ 7.5.2005, 16:11)
Не представляю где там пробелы еще могут стоять

а ты уверен, что в них дело?
PM WWW   Вверх
Sardar
Дата 7.5.2005, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 6
Всего: 317



Ну так не бывает! Письмо од Girder
Цитата

Вот для таких вещей... не работает

Re: Re(6): Re: Re(3): Re: Re: Girder


Проверяем код:

Код
$old_msg['title']="Re: Re(6): Re: Re(3): Re: Re: Girder";

$old_title=preg_replace_callback("/^\s*([Rr]\s*[Ee])\s*(?:\s*\\(([0-9]+)\\))?/i", create_function('$test', 'return isset($test[2])? $test[1]."(".($test[2]+1).")": $test[1]."(2)";'), $old_msg['title'], 1);
echo $old_title=($old_title==$old_msg['title'])? $old_title="Re: ".$old_msg['title']: $old_title;


У меня результат: Re(2): Re(6): Re: Re(3): Re: Re: Girder

Загоняю его по новой, результат: Re(3): Re(6): Re: Re(3): Re: Re: Girder

Обьясните, неужели это матрица, я обкурился или чего? Ну почему у меня работает? smile
Добавлено @ 18:38
Цитата(Wowa @ 7.5.2005, 17:19)
а ты уверен, что в них дело?

У меня такое ощущение что у нас по разному ведут себя реги...
Добавлено @ 18:41
Если не хотим нумерации, то можно так:

Код
$old_title   = "Re:".$old_msg['title'];
$old_title = preg_replace( "/^\s*(?:Re\s*\:\s*)+/i", "Re: ", $old_title );


Вырежет все Re: оставив один.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Sardar
Дата 7.5.2005, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 6
Всего: 317



Girder, соколиный глаз засёк багу злобную:
Цитата
А вот с таким входным параметром... запусти: $old_msg['title']='ReGir'

Енто косяк...


Точно косяк. Подняв в N'ый раз свой бубен нашаманил:
Код
$old_title=preg_replace_callback("/^\s*(re)\s*(?:\s*\\(([0-9]+)\\))?\s*:/i", create_function('$test', 'return isset($test[2])? $test[1]."(".($test[2]+1)."):": $test[1]."(2):";'), $old_msg['title'], 1);
$old_title=($old_title==$old_msg['title'])? $old_title="Re: ".$old_msg['title']: $old_title;


Запускаем тест(в коментариях результат у меня):
Код
//$old_msg['title']="simple title"; //Re: simple title
//$old_msg['title']="Re: simple title"; //Re(2): simple title
//$old_msg['title']=" \t RE  (5) :  title"; //RE(6): title
//$old_msg['title']=" \n rE   : (3) title"; //rE(2): (3) title
//$old_msg['title']="ReGir"; //Re: ReGir
//$old_msg['title']="Re:ReGir"; //Re(2):ReGir

$old_title=preg_replace_callback("/^\s*(re)\s*(?:\s*\\(([0-9]+)\\))?\s*:/i", create_function('$test', 'return isset($test[2])? $test[1]."(".($test[2]+1)."):": $test[1]."(2):";'), $old_msg['title'], 1);
echo $old_title=($old_title==$old_msg['title'])? $old_title="Re: ".$old_msg['title']: $old_title;


Большой пасиб 2Girder smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Sardar
Дата 8.5.2005, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 6
Всего: 317



И так проблема вроде как порешалась(Wowa слово за тобой). Но в воздухе витала мысль, а что если убрать множественные Re: из заголовков, написанных ранее, до использования фичи?

Партия не стоит на месте, обмозговав ситуацию с Girder'ом решили написать. Girder источник идеи smile начал раньше, потому нашли баги, обошёл грабли, вот мой вариант:
Код
preg_match("/^\s*(re)\s*(?:\(\s*([0-9]+)\s*\))?\s*:/i",$old_msg['title'],$pmre);
$str=preg_replace("/^(\s*(re)\s*(?:\(\s*([0-9]+)\s*\))?\s*:)+/i", "", $old_msg['title']);
$old_title=isset($pmre[2])? "Re(".($pmre[2]+1)."): {$str}": (isset($pmre[1])? "Re(2): {$str}": "Re: {$str}");


Тесты(в коментарии результаты):
Код
//$old_msg['title']="simple title"; //Re: simple title
//$old_msg['title']="Re: simple title"; //Re(2): simple title
//$old_msg['title']=" \t RE  (5) :  title"; //Re(6): title
//$old_msg['title']=" \n rE   : (3) title"; //Re(2): (3) title
//$old_msg['title']="ReGir"; //Re: ReGir
//$old_msg['title']="Re:ReGir"; //Re(2):ReGir
//$old_msg['title']="Re(2): Re(2): Re(2): Girder"; //Re(3): Girder
//$old_msg['title']=" test Re(2): Re(2): Re(2): Girder"; //Re: test Re(2): Re(2): Re(2): Girder
//$old_msg['title']="Re(2):  Re(2): test: Re(2): Girder"; //Re(3): test: Re(2): Girder

preg_match("/^\s*(re)\s*(?:\(\s*([0-9]+)\s*\))?\s*:/i",$old_msg['title'],$pmre);
$str=preg_replace("/^(\s*(re)\s*(?:\(\s*([0-9]+)\s*\))?\s*:)+/i", "", $old_msg['title']);
echo $old_title=isset($pmre[2])? "Re(".($pmre[2]+1)."): {$str}": (isset($pmre[1])? "Re(2): {$str}": "Re: {$str}");


Оригинальный от Girder'а отличается, запости его smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Girder
Дата 8.5.2005, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



Енто ты... про енто? smile
Код
    preg_match("/^\s*(re)\s*.\s*([0-9]+)\s*.\s*:/i",$old_msg['title'],$pmre);
    $spre=preg_split("/((?<=[\s:])r[eå]\s*(:|\(\s*[?>0-9]+\s*\)\s*:))/i"," ".$old_msg['title']); //$spre=split("(^ *[Rr][Ee] *[:]| *[Rr][Ee] *[:]| *[Rr][Ee] *. *[0-9]+ *. *[:]|^ *[Rr][Ee] *. *[0-9]+ *. *[:])",$old_msg['title']);
    $old_title=isset($pmre["2"])? "RE(".($pmre[2]+1)."): ".trim(implode("",$spre)): "RE(".count($spre)."): ".trim(implode("",$spre));


PS: smile

Это сообщение отредактировал(а) Girder - 19.5.2005, 23:43


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Sardar
Дата 8.5.2005, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 6
Всего: 317



Угу, только две баги, что я на PM послал надо было пофиксить smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Wowa
Дата 8.5.2005, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 79
Всего: 290



Так, какой код мне ставить?
PM WWW   Вверх
Sardar
Дата 9.5.2005, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 6
Всего: 317



Код Girder'a имеетм пару "багов", которые под иным углом зрения можно видеть как фичи smile

Первая "бага", текст "Ret2z: способ модуляции цифрового сигнала(RZ code)", перегонит в:
"Re(3): способ модуляции цифрового сигнала(RZ code)";
Цитата
>Не плохо, ты скобки () специально не обязательными сделал? Отсюда первый косяк:

Угу... уж больно захотелось убивать вот такие вещи(использую один символ) Re{2} или Re[2] - ну ты понял... А вероятноять появления в заголовке "Ret2z" - посчитал слишком молой... smile PS: Ну лодырь я! smile

Проблема в том, что принимаються не только скобки (), но и любой другой символ, т.е... Re[1], Reo1i, Re(1) - это всё одно и тоже. По моему это всё же больше бага чем фича smile

Вторая "бага" в удалении всех Re, даже посередине заголовка:
Цитата
>$old_msg['title']="Тестируем Re(1): Re(2): Re(2): Re(2): ReGirder";
>На выходе: "Re(4): Тестируем ReGirder";
>Все промежуточные Re() являлись частью заголовка, удалять нельзя

Жаль... но тоже специально заложил smile Я частенько добавлял в начало заголовка новое пояснение... т.е. было Re: Re: Girder, а при ответе добавил в начало... типо Ok Re: Re: Girder

Это уже похоже на фичу, но мне лично как то не удобно, если куча Re: будет удаляться из середины сообщения, не логично, хотя вряд ли кто часто будет набирать такое:
"Привет, траблы с " Re: " пофиксили!", удалит Re: из середины.


Мой код этих двух "проблем" не имеет, я (естественно smile ) за свой код smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Girder
Дата 9.5.2005, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



Цитата(Sardar @ 9.5.2005, 02:03)
Проблема в том, что принимаються не только скобки (), но и любой другой символ, т.е... Re[1], Reo1i, Re(1) - это всё одно и тоже. По моему это всё же больше бага чем фича
Ну хорошо... пусть будет бага smile PS: Хотя я считаю что бага вот на таких вещах: Re 12 : => Re(3): smile

Цитата(Sardar @ 9.5.2005, 02:03)
Мой код этих двух "проблем" не имеет, я (естественно  ) за свой код
А мне пофиг... smile

PS: Я за хоть любой вариант... лишбы поставили. Кстати... разница между кодами есть и более существенная: Т.е например:
1) Строка " re: Re(3): Re: Re: Re: Re: Re: GirderRe:"
- твой: Re(2): GirderRe:
- мой: RE(8): GirderRe: - (там правда... см. в коде выше пришлось изменить вторую строчку, старую закомментировал... smile - а то не совсем понравилось... как код ведет себя на некоторый строчках smile )
2) Строка " re ( 23 ) : Re(3): Re: Re: Re: Re: Re: GirderRe:"
- твой: RE(24): GirderRe:
- мой: RE(24): GirderRe:
3)Строка " re: Re: Re: Re: Re: Re: Re: GirderRe:"
- твой: Re(2): GirderRe:
- мой: RE(8): GirderRe:

Т.е. пропустил еще одну "фичу" smile Т.е. так в моем коде... если первый RE не записан в виде Re(22) - то "берется" количество Re иначе берется 22+1 smile

PS2: Голосую за вариант Sardar-а smile

Это сообщение отредактировал(а) Girder - 9.5.2005, 13:07


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Girder
Дата 16.8.2005, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: 25
Всего: 155



1. Правим Messenger.php:
- a) Из кода Sardar-а убираем лишние пробельчики... то есть лучше вот так:
Код
preg_match("/^\s*(re)\s*(?:\(\s*([0-9]+)\s*\))?\s*:/i",$old_msg['title'],$pmre);
$str=preg_replace("/^(\s*(re)\s*(?:\(\s*([0-9]+)\s*\))?\s*:)+/i", "", $old_msg['title']);
$old_title=isset($pmre[2])? "Re(".($pmre[2]+1)."):{$str}": (isset($pmre[1])? "Re(2): {$str}": "Re: {$str}");
- б) Находим следующий код(функция view_msg):
Код
$this->output .= $this->html->Render_msg( array(
                                                                  'msg'    => $msg,
                                                                  'member' => $member,
                                                                  'jump'   => $this->jump_html
                                                           )      );
заменяем его на енто:
Код
if ($msg['title'])
            {
             preg_match("/^\s*(re)\s*(?:\(\s*([0-9]+)\s*\))?\s*:/i",$msg['title'],$pmre);
             $str=preg_replace("/^(\s*(re)\s*(?:\(\s*([0-9]+)\s*\))?\s*:)+/i", "", $msg['title']);
             $old_title=isset($pmre[2])? "Re(".($pmre[2]+1)."):{$str}": (isset($pmre[1])? "Re(2): {$str}": "Re: {$str}");
            }else
            {
             $old_title='Re: ???';
            }

                $this->output .= $this->html->Render_msg( array(
                                                                     'msg'    => $msg,
                                                                     'member' => $member,
                                                                     'O_TITLE'   => $old_title,
                                                                     'jump'   => $this->jump_html
                                                                  )      );

2. Правим skin_msg.php:
- Находим(функция Render_msg($data)):
Код
name='msg_title' value='Re: {$data['msg']['title']}
по идеи... должно один раз встретиться smile ... т.е. ищем Re:
- и заменяем на:
Код
name='msg_title' value='{$data[O_TITLE]}'


Это сообщение отредактировал(а) Girder - 16.8.2005, 05:04


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
Sardar
Дата 16.8.2005, 01:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 6
Всего: 317



Поставил на полигне smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Wowa
Дата 17.8.2005, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: 79
Всего: 290



Поставил на форум
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Обсуждение форума | Следующая тема »


 




[ Время генерации скрипта: 0.0925 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.