Проблема с "Re:". Надо сделать сдлеать с числом "Re(3):" вместо "Re: Re: Re

Eugeniy

Новичок
Проблема с "Re:". Надо сделать сдлеать с числом "Re(3):" вместо "Re: Re: Re

Система приватных сообщений.

При нажатии "Ответить" в тему сообщения подставляется в начало Re: + исходная тема.
Когда много раз отвечают, это Re: запоняет всю строку темы.
Как бы сделать с числом?
 

HabaHaba

Новичок
Меня сейчас скушает Фанат :D
2 варианта:
1. Заранее считать кол-во ответов
2. Оставить всё строкой и при выводе применять к ней preg_match_all() который будет возвращать кол-во вхождений определенного патерна в строку.
 

Eugeniy

Новичок
1. Заранее считать кол-во ответов

Чего то как то не так... :)


2. Оставить всё строкой и при выводе применять к ней preg_match_all() который будет возвращать кол-во вхождений определенного патерна в строку.

Такие же мысли, только не знаю как это сделать...
При первом ответе (если нет в начале строки Re) то подставляем в начало "Re:" - как проверить?
И если есть в начале "Re" но дальше надо найти число (как?), если число не найдено, то вырезаем "Re:" и ставим "Re(1):" (как?), если число найдено, то вырезаем Re(x): (как?) и подставляем в начало "Re(x+1):" (как?)

нагородил тут чего-то...
 

Demiurg

Guest
регулярное выражение:
|^Re(\([0-9]+\))?:|
потом смотри что получилось в результати и составляем новую тему.
хотя можно обойтись и без него.
 

Demiurg

Guest
>а как?
смотришь, что стоит вначале строки и парсишь потихоньку.
 

Green Mother

Guest
Примерно так
PHP:
$subject = "Re: Re(3): Re: Re(6): subject";
// разбиваем тему на две части
preg_match('/^\s*((?:re(?:\(\d+\))?:\s*)*)(.*)$/i', $subject, $parts);
// подставляем еденички к Re:, чтоб проще было
$parts[1] = preg_replace('/re:/i', 're(1):', $parts[1]);
// Считаем сумму чисел в скобочках
preg_match_all('/re(\((\d+)\))?:/i', $parts[1], $parse);
$s = array_sum($parse[2]) + 1;
// Заносим новую тему
$newsubject = "Re".($s > 1? "($s): ": ": ").$parts[2];
 

Фанат

oncle terrible
Команда форума
Форждест.
ты, как и половина отвечающих в этом треде, решаете проблему в лоб.
срываете вершки.
есть одна строка, надо перевести в другой формат. Понеслась!

А ПОДУМАТЬ?
откуда эта строка берется?
как формируется?
а, может быть, стоит прямо в процессе формирования цифру-то писать, а?
Эти Ре - наверняка добавляются кодом скрипта автоматом.
И наверное, лучше поменять этот автомат, а не переделывать за ним его работу. А?
 

Фанат

oncle terrible
Команда форума
очередной "лобовик".
мамаша. че-то маловато у вас регов-то. Вы бы не стеснялись - реги, они для того и придуманы, чтобы их раз по 20 подряд вызывать
 

Green Mother

Guest
Отвечающие делятся на две категории, первая - которые отвечают, вторая - прошу прощения, п$#@ят.
Мой вариант универсален, не спорю. Можешь предложить лучше - вперед, нет - так нет, "грыби дальше...."
 

Фанат

oncle terrible
Команда форума
Мамаша, я тут стольким людям отвечаю, что на одном могу и отдохнуть.
Тем более, что он не потрудился ответить на главный вопрос - откуда это берется.

А ты, мамаша, продолжай в том же духе.
Юзеры любят таких - "чего думать - прыгать надо". себе подобных.
успехов.
 

Sir_J

Guest
to ForJest
По моему предположениию
Фанат, Romik, Ваня-Ваня, Buster Keaton - одно и тоже лицо .
 

Green Mother

Guest
Фанат, покажи из своих 270 постов хотя бы пару-тройку, в которых, кроме понтов, содержится ответ на поставленный вопрос. Я просматриваю не все темы, может чего и пропустил, но таковых пока не встречал.
 

Фанат

oncle terrible
Команда форума
Мамаша, ты просто не различаешь, что такое ответ.

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

а вот большинство отвечающих на этом форуме напоминают того доктора в анекдоте. просят? отрежем.

вот и здесь. я смотрю в корень. лечить надо не симптомы (Ре), а болезнь (то, что их создает).
а ответов по делу много. и понтов мало. понтов у меня вообще нет. есть раздражение людьми, которые не думают.
 

Фанат

oncle terrible
Команда форума
специфика форума такая.
вот посмотри - половина вопросов возникла у людей только потому, что они изначально выбрали неверный путь решения своей задачи.
 
Сверху