Strict Standards: Resource ID#36 used as offset, casting to integer (36) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#38 used as offset, casting to integer (38) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#39 used as offset, casting to integer (39) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Регулярное выражение для удаления времени из текста
ТвойWeb » WebMaster класс » PHP/Perl » Регулярное выражение для удаления времени из текста

Страниц (2): [1] 2 »
 

1. victor - 06 Июля, 2007 - 04:25:57 - перейти к сообщению
Здравствуйте, ни как не могу сделать правильный себе шаблон. Может кто поможет.

Есть такая строчка для примера:
15.20 Криминальная Россия. "Три товарища". 2-я серия

Хочу удалить время: 15.20

А вместе со временем удаляются все цифры.
Мне надо получить вот такую строчку:


Криминальная Россия. "Три товарища". 2-я серия

Вот сам код что я смог придумать:
CODE:

$str='15.20 Криминальная Россия. "Три товарища". 2-я серия';
preg_match_all("/[^\d].[^\d]+/",$str, $match);
print_r ($match);
2. Alone - 06 Июля, 2007 - 05:06:38 - перейти к сообщению
victor
Если у тебя время выводится переменной - то проще просто убрать эту переменну, и время не будет выводиться.

Можно ещё так:

CODE:

$str='15.20 Криминальная Россия. "Три товарища". 2-я серия';
$str = str_replace("15.20","",$str);
echo $str;
3. victor - 06 Июля, 2007 - 08:42:48 - перейти к сообщению
Alone ты не понял сути вопроса.
На вход я подаю массив

Вот часть массива

Array ( [0] => Понедельник, 4 июня 5.00 Телеканал Доброе утро 9.00 Новости 9.05 Малахов + 10.20 Агент национальной безопасности Т/с

И из него при помощи шаблона который я описал выше я удаляю время. Но со временем удаляется любая цифра находящаяся в этом тексте.
Поэтому я попросил, нельзяли какимто образом сделать шаблон который бы удалял только время.
4. Ray Wen - 06 Июля, 2007 - 09:14:04 - перейти к сообщению
victor
удаляй первые четыре символа, либо перепиши свой алгоритм стирать первые символы до пробела...
5. Леголегс - 06 Июля, 2007 - 10:44:03 - перейти к сообщению
victor
CODE:

$str='15.20 Криминальная Россия. "Три товарища". 2-я серия';
preg_replace("/\d+\.\d+\s+/","",$str);

Останется Криминальная Россия. "Три товарища". 2-я серия
6. victor - 09 Июля, 2007 - 04:15:37 - перейти к сообщению
Ray Wen читай внимательнее текс. Я подаю весь массив, а не одну строчку.

Из всех предложений хорошее только у Леголегс , но не совсем правильное я использую команду
Цитата:
preg_match_all
что позволяет мне массив поделить на столько массивов сколько строк совпадают по шаблону. И у меня получается что я текст из массива делю на массивы времени и массивы информации. Потом подставляю нужные мне теги и вывожу на экран пользователю.
А твой вариант Леголегс только убирает время оставляя мне массив просто без времени.

Вот то что я хочу:
CODE:

preg_match_all("/[^\d].[^\s\d]+/",$ort[0], $match);


этот шаблон убирает только время, но делит при этом строчку на все пробелы которые существуют в этой строке. Что тоже неподходит.

У ково какие будут предложения.
7. TvoyWeb - 10 Июля, 2007 - 03:52:17 - перейти к сообщению
victor
Так давай по другому.
Опиши:
1) Исходные данные целиком, то есть законченный массив который ты подаешь.
2) Что хочешь получить на выходе. Покажи пример массива который ты хочешь получить из исходного.
8. victor - 10 Июля, 2007 - 04:37:02 - перейти к сообщению
TvoyWeb мне нужно из текстового файла телевизионной программы получить файл XML для этого я сделал следующее. Разделил источник на дни. Получил массив дня. Теперь мне нужно разделить время от основной информации. Это я сделал очень легко:
Исходник массива который подается я прикрепляю.
CODE:

preg_match_all("/\d??\d\.[0-9][0-9]/",$can, $match2); //только время


На выходе получил массивы содержащие только время. Массив содержит 26 элементов.
Теперь мне надо получить такое же количество элементов в массиве текста удалив из него время. Что я и попыталься сделать. В первом случае он убирает время но при этом убирает и все цифры находящиеся в строчке при этом количество элементов между массивами естественно разное
CODE:

preg_match_all("/[^\d].[^\d]+/",$str, $match);

во втором случае он убирает время и все пробелы
CODE:

preg_match_all("/[^\d].[^\s\d]+/",$ort[0], $match);


вот если бы вот эти патэрны ^\s\d сгрупировать. Заставить работать как одно условие. То тогда проблемма была бы возможно решена. А так получается каждый патэрн работает на себя.

Тоесть на данном этапе мне надо получить два источника массивов, один со временем, другой с информацией.
Пример:
time[0]=5.00
inf[0]=Телеканал «Доброе утро»

Если это получится, мне остается только подставить тэги XML файла и сохранить.

Какие будут соображения?
9. Леголегс - 10 Июля, 2007 - 06:11:51 - перейти к сообщению
victor
В регулярных выражениях точка озанчает не точку, а любой символ. Поставь бэкслеш перед точкой.
10. victor - 10 Июля, 2007 - 09:08:36 - перейти к сообщению
Спасибо Леголегс но непомогает. Проблема не в точке а в вырезании цифр. Надо поидее применить шаблон вот такого типа: /^(\d{1,2}\.\d{2})./
Что по идее озночает небрать время. Но вот как правильно это написать?

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0444]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33