Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2008-01-29

Re[7]: Регулярные выражения (RegExp'ы): нужна консультация

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

   Вадим Шешунов 2008-01-29 16:01:16 (#721416)

Re[7]: Регулярные выражения (RegExp'ы): нужна консультация

Дмитрий, я попозже "прокачу" ваши данные на скрипте (вероятно, его
доотладить нужно).
А насчет отключения рекламы можете не беспокоится - для меня это далеко не
критичный вопрос.-)))))))
С уважением.
Вадим Шешунов.

   Вадим Шешунов 2008-01-29 13:14:15 (#721393)

Re[6]: Регулярные выражения (RegExp'ы): нужна консультация

Доброе утро, Вадим!

29.01.2008 Вы написали мне письмо:
mid:20080129120551.7213***@c*****.subscribe
Тема: "Re[5]: Регулярные выражения (RegExp'ы): нужна консультация"

>>> Попросту говоря, в тексте нужно найти фиксированный ИМейл (именно
>>> фиксированный, который вы точно знаете), а за ним через пару-тройку
>>> переводов строки строку "========...=" из неменее чем 30 символов =. И
>>> отступя, еще раз строку >>> Если я это понял правильно, то я бы не стал регуляркой пользоваться.
>>
>> Почему не стали бы?..
> Причин несколько.
> 1. Написание шаблонов - довольно кропотливое занятие, особенно для новичков
> (к коим на 90% принадлежу и я), где одна единственная ошибка приведет к
> долгим ее поискам в шаблоне (точнее, может привести).
> 2. Говорят, что регулярки сильно грузят сервер.
> 3. Ваша задача из тех, где легче обойтись "классическими" приемами - прямой,
> скажем так, обработкой текста, поскольку тот текст, который нужно найти
> имеет достаточно строгий формат. А регулярки используются при менее четких
> критериях.
>>
>>> $s=substr($s,strpos($s,str_repeat('=',30))+30);
>>> while(substr($s,0,1))=='=')$s=substr($s,1);
>>> $s=substr($s,strpos($s,str_repeat('=',30))+30);
>>> while(substr($s,0,1))=='=')$s=substr($s,1);
>>> Теперь в $s у нас тело+футер (т.е. мы отрезали все по вторую двойную
>>> линию).
>>> Конечно эти две строчки можно "прокатить" в цикле for от 1 до 2.
>>> $s=substr($s,0,strpos($s,'-ж----')) - без футера нужная "середка"-)))
>>
>> Почему-то у меня этот код отказываться работать и вообще выскакивае
>> сообщение об ошибке:
>> Parse error: syntax error, unexpected T_IS_EQUAL in
>> /home/cimaruwe/domains/cima.ru/public_html/soros/temp/3.php
>> on line 6
>> это строчка, где находится первый цикл...
>>
> Я просто закрыл круглую скобку не в том месте.
> while(substr($s,0,1)=='=')$s=substr($s,1);

Вадим, спасибо!
Я подкорректировал Ваш код (пару синтаксичеческих очепяток).
Код работает, но не на всех варантах!

Варианты "живые" я выложил здесь (18 файлов):
http://soros.cima.ru/temp/01.txt
...
http://soros.cima.ru/temp/18.txt

Скрипт в некоторых случаях пытается "откусить" лишнюю часть в начале
текстов. В частности, он не справился с файлами с номерами:
04, 05, 06, 07, 08, 09, 10, 11, 12, 14, 15, 16, 17, 18
хуже всего скрипт обошелся с текстом 12, 14, 15, 18

У меня есть работающий на всех "живых" примерах RegExp, который
составила уважаемая Наталья Сысоева.

Если интересно решить эту задачку не регэкспом, то буду рад получить
от Вас очередное письмо с идеями по этому поводу. В любом случае, как
и обещал, отключу Вам субскрайбовскую рекламу на год. На какой е-мэйл
отключать (можно это сообщить в личку).

--
29.01.2008 - 11:23

С уважением, Славников Дмитрий
http://subscribe.ru/author/9810
E-mail: slavnikov***@c*****.by
Mobile: (+375 29) 629-30-43
ICQ: 115041944

   "Dmitry V. Slavnikov" 2008-01-29 12:55:32 (#721388)

Re[5]: Регулярные выражения (RegExp'ы): нужна консультация

>> Попросту говоря, в тексте нужно найти фиксированный ИМейл (именно
>> фиксированный, который вы точно знаете), а за ним через пару-тройку
>> переводов строки строку "========...=" из неменее чем 30 символов =. И
>> отступя, еще раз строку >> Если я это понял правильно, то я бы не стал регуляркой пользоваться.
>
> Почему не стали бы?..
Причин несколько.
1. Написание шаблонов - довольно кропотливое занятие, особенно для новичков
(к коим на 90% принадлежу и я), где одна единственная ошибка приведет к
долгим ее поискам в шаблоне (точнее, может привести).
2. Говорят, что регулярки сильно грузят сервер.
3. Ваша задача из тех, где легче обойтись "классическими" приемами - прямой,
скажем так, обработкой текста, поскольку тот текст, который нужно найти
имеет достаточно строгий формат. А регулярки используются при менее четких
критериях.
>
>> $s=substr($s,strpos($s,str_repeat('=',30))+30);
>> while(substr($s,0,1))=='=')$s=substr($s,1);
>> $s=substr($s,strpos($s,str_repeat('=',30))+30);
>> while(substr($s,0,1))=='=')$s=substr($s,1);
>> Теперь в $s у нас тело+футер (т.е. мы отрезали все по вторую двойную
>> линию).
>> Конечно эти две строчки можно "прокатить" в цикле for от 1 до 2.
>> $s=substr($s,0,strpos($s,'-ж----')) - без футера нужная "середка"-)))
>
> Почему-то у меня этот код отказываться работать и вообще выскакивае
> сообщение об ошибке:
> Parse error: syntax error, unexpected T_IS_EQUAL in
> /home/cimaruwe/domains/cima.ru/public_html/soros/temp/3.php
> on line 6
> это строчка, где находится первый цикл...
>
Я просто закрыл круглую скобку не в том месте.
while(substr($s,0,1)=='=')$s=substr($s,1);

   Вадим Шешунов 2008-01-29 12:05:51 (#721375)

Re[4]: Регулярные выражения (RegExp'ы): нужна консультация

Доброй ночи, уважаемый Вадим!

28.01.2008 Вы написали мне письмо:
mid:20080128210017.7212***@c*****.subscribe
Тема: "Re[3]: Регулярные выражения (RegExp'ы): нужна консультация"

> Попросту говоря, в тексте нужно найти фиксированный ИМейл (именно
> фиксированный, который вы точно знаете), а за ним через пару-тройку
> переводов строки строку "========...=" из неменее чем 30 символов =. И
> отступя, еще раз строку > Если я это понял правильно, то я бы не стал регуляркой пользоваться.

Почему не стали бы?..

> $s=substr($s,strpos($s,str_repeat('=',30))+30);
> while(substr($s,0,1))=='=')$s=substr($s,1);
> $s=substr($s,strpos($s,str_repeat('=',30))+30);
> while(substr($s,0,1))=='=')$s=substr($s,1);
> Теперь в $s у нас тело+футер (т.е. мы отрезали все по вторую двойную линию).
> Конечно эти две строчки можно "прокатить" в цикле for от 1 до 2.
> $s=substr($s,0,strpos($s,'-ж----')) - без футера нужная "середка"-)))

Почему-то у меня этот код отказываться работать и вообще выскакивае
сообщение об ошибке:
Parse error: syntax error, unexpected T_IS_EQUAL in /home/cimaruwe/domains/cima.ru/public_html/soros/temp/3.php
on line 6
это строчка, где находится первый цикл...

P.S. мне уже прислали работающий регэксп! :)
--
29.01.2008 - 3:09

С уважением, Славников Дмитрий
http://subscribe.ru/author/9810
E-mail: slavnikov***@c*****.by
Mobile: (+375 29) 629-30-43
ICQ: 115041944

   "Dmitry V. Slavnikov" 2008-01-29 04:02:49 (#721274)