Помогите исправить регулярку

12
seosniks
На сайте с 13.08.2007
Offline
389
772

Добрый вечер.

Проблемма такая

Нужно разбить данные в массив

есть строка

40474890	Книги>Автомобили>Правила и безопасность дорожного движения	Третий Рим	00114585	Экзаменационные (тематические) задачи для подготовки к теоретическим экзаменам на право управления транспортными средствами категорий А и В	90	00114585	http://www.site.ru/cgi-bin/dsc.cgi?40474890&partner=&new=1	http://cors.alhs.ru/0/00/001/00114585.gif	5889240102	

пробую так

preg_match_all('!^([0-9]+)(.*) (.*?)>(.*?)>(.*?)([0-9]+) (.*?) http\:(.*?)new=1(.*?)([0-9]+)!is',$ff[$i],$ok);  

в $i номер строки

Так вот строка берет нормальн все строки в которых нет красной строки.

а если попадает красная строка то отдает так

а мне нужно чтоб и красная строка попала в элемент массива если она там есть, если нет то значение пустое.

и еще после красной строки может идти значение из цифр 5889240102 которое также должно попасть в массив если оно будет в строке. Но его может и не быть.

funky
На сайте с 15.02.2009
Offline
35
#1

привет.

попробуй

preg_match_all('!^([0-9]+)(.*) (.*?)>(.*?)>(.*?)([0-9]+) (.*?) http\:(.*?)new=1(.*?)?([0-9]+)!is',$ff[$i],$ok);

upd.

кгм. если там все через tab,

может быстрее и надежнее использовать

list($var1,...,$varN) = explode("\t",$ff[$i]);
seosniks
На сайте с 13.08.2007
Offline
389
#2
funky:
привет.
попробуй
preg_match_all('!^([0-9]+)(.*) (.*?)>(.*?)>(.*?)([0-9]+) (.*?) http\:(.*?)new=1(.*?)?([0-9]+)!is',$ff[$i],$ok);


upd.
кгм. если там все через tab,
может быстрее и надежнее использовать
list($var1,...,$varN) = explode("\t",$ff[$i]);

там разбито похоже пробелами

вот так проверил все корректно

$ok=  explode("  ",$ff[$i]);

var_dump( $ok);

хотя может и будет где косяк

но выдает из 17 строк 100% корректности.

funky
На сайте с 15.02.2009
Offline
35
#3

а регексп подошел ?

seosniks
На сайте с 13.08.2007
Offline
389
#4
funky:
а регексп подошел ?

Я в них не силен:( по этому не понял как его заюзать.

O3
На сайте с 17.11.2008
Offline
127
#5

актуально ?

seosniks
На сайте с 13.08.2007
Offline
389
#6
oleg3d:
актуально ?

Собственно пробовал но четко не получается один фиг.

Строка похоже имеет 2 пробела в качестве разделителя.

Я щас пока забросил до лучших времен этот код. Щас пишу себе сайт

Буду оказывать бесплатные консультации по сантехнике ;)

[Удален]
#7

seosniks, опять ГС? то есть очередной ГС?

честно говоря ваша хрень смахивает на CSV ?

где разделитель - табуляция.

так и используйте fgetcsv

seosniks
На сайте с 13.08.2007
Offline
389
#8
bearman:
seosniks, опять ГС? то есть очередной ГС?

Всмысле?

честно говоря ваша хрень смахивает на CSV ?

где разделитель - табуляция.

так и используйте fgetcsv

Да этот файл базы данных но в таком тупом формате. Фалик тектсовый.

Мне кажеться с CSV легче справиться

[Удален]
#9
seosniks:
Всмысле?


Да этот файл базы данных но в таком тупом формате. Фалик тектсовый.
Мне кажеться с CSV легче справиться

так это и есть ксв))

ГС - говносайты - блоги, сплоги, сателиты ... и прочая чепухня

seosniks
На сайте с 13.08.2007
Offline
389
#10
bearman:
так это и есть ксв))

ГС - говносайты - блоги, сплоги, сателиты ... и прочая чепухня

Тогда почему у него расширение txt?

НА счет Гс .Нет Я делаю Рабочий сайт.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий