[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подскажите с регуляркой
Renden
Доброго понедельничка вам :)
Требуется подсказка с регулярными выражениями у меня туговато пока что.
Собственно надо получить названия.
Попробывал так, получается массив несовсем правильный..

header("Content-type: text/html; charset=utf-8");
$string = '
--------------------------------------:--------------:--------------:--------------:--------------:
Название товара :Остаток на :Оборот приход :Оборот приход :Оборот касса :
:начало :внешний :перемещение :продажа :
--------------------------------------:--------------:--------------:--------------:--------------:
'
;
$text = preg_replace("/-/",'',$string);
$text = preg_split("/[\:]+/", $text);
print_r($text);

Я думаю надо както совместить то что [А-я] и : и перенос строки, подскажите как можно сделать?



Спустя 4 минуты, 31 секунда (27.06.2011 - 14:10) Winston написал(а):
А в тексте есть хоть какие-то еще разделители? Или только вот такой сплошной текст с - и : ?

Спустя 5 минут, 30 секунд (27.06.2011 - 14:15) Renden написал(а):
PHPprogramer
Я скинул так как есть, больше ничего там нет... еслиб было в 1 строчку яб explode(":") сделал и непарился бы..а так, требуется помощь, я хз как..

Спустя 25 минут, 33 секунды (27.06.2011 - 14:41) bulgakov написал(а):
А что если с помощью функции ltrim() удалить ненужные начальные символы потом через rtrim() конечные а оставшуюся строку разбить по ":"? По моему должно получиться. Код проверить сейчас не могу потому как на работе.

Спустя 17 секунд (27.06.2011 - 14:41) Winston написал(а):
Вообщем у меня получилось.Но чтобы правильно выбиралось название, нужно строго следовать шаблону, вот такому
Цитата
Название товара                      :Остаток на    :Оборот приход :Оборот приход :Оборот касса  :


Вот извращение на регулярках
Свернутый текст
header('Content-Type: text/html; charset=utf-8');
$string = '
--------------------------------------:--------------:--------------:--------------:--------------:
Название товара :Остаток на :Оборот приход :Оборот приход :Оборот касса :
:начало :внешний :перемещение :продажа :
--------------------------------------:--------------:--------------:--------------:--------------:
--------------------------------------:--------------:--------------:--------------:--------------:
Еще товар :Остаток на :Оборот приход :Оборот приход :Оборот касса :
:начало :внешний :перемещение :продажа :
--------------------------------------:--------------:--------------:--------------:--------------:
--------------------------------------:--------------:--------------:--------------:--------------:
Еще больше товара :Остаток на :Оборот приход :Оборот приход :Оборот касса :
:начало :внешний :перемещение :продажа :
--------------------------------------:--------------:--------------:--------------:--------------:
'
;
preg_match_all("/^(.*)$/isu", $string, $matches);
foreach($matches[1] AS $k => $v)
preg_match_all("/([a-zа-яё\s]+)\s*:Остаток на/isu", $v, $matches2);

print_r($matches2[1]);

Спустя 3 минуты, 40 секунд (27.06.2011 - 14:45) bulgakov написал(а):
Так же я думаю можно разбить строка по символу ":" а внутри уже отфильтровать текст.

Спустя 2 минуты, 34 секунды (27.06.2011 - 14:47) Renden написал(а):
PHPprogramer
bulgakov
Печалько, вы походу не так поняли, нужно получить:
Цитата

Array(
[0] => Название товара
[1] => Остаток на начало
[2] => Оборот приход внешний
[3] => Оборот приход перемещение
[4] => N
[N] => N
)

Это названия столбцов.. их может быть N-штук...

Спустя 2 минуты, 21 секунда (27.06.2011 - 14:50) Winston написал(а):
Цитата (Renden @ 27.06.2011 - 14:05)
Собственно надо получить названия

smile.gif

Я так понял.

Спустя 2 минуты, 3 секунды (27.06.2011 - 14:52) Winston написал(а):
Цитата (Renden @ 27.06.2011 - 14:05)
Название товара                      :Остаток на    :Оборот приход :Оборот приход :Оборот касса

Только это нужно получить? Независимо от количества столбцов.

Или это тоже нужно получить ?
Цитата (Renden @ 27.06.2011 - 14:05)
:начало        :внешний      :перемещение  :продажа      :


Спустя 2 минуты, 40 секунд (27.06.2011 - 14:54) Renden написал(а):
PHPprogramer
Прошу прощения, спал 1.5 часа, плохо соображаю, плохо изьясняюсь sad.gif

Цитата
Или это тоже нужно получить ?
:начало        :внешний      :перемещение  :продажа      :

Это тоже, в этом то и сложность..

Спустя 5 секунд (27.06.2011 - 14:54) bulgakov написал(а):
То есть у вас получается проблема с блоком например:

:Остаток на :Оборот приход :Оборот приход :Оборот касса :
:начало :внешний :перемещение :продажа :

То есть если разбивать по двоеточиям то сначала будут идти ячейки со значениями "Остаток на", Оборот" приход", "Оборот приход", "Оборот касса" ну и потом все остальные... то есть вам надо правильно сформировать например Остаток на начало"?

Спустя 3 минуты, 52 секунды (27.06.2011 - 14:58) Winston написал(а):
Если шаблон будет таким
Цитата
$string = '
--------------------------------------:--------------:--------------:--------------:--------------:
Название товара                      :Остаток на начало    :Оборот приход внешний :Оборот приход перемещение :Оборот касса продажа  :
--------------------------------------:--------------:--------------:--------------:--------------:
';


То вы получите то что хотели, то есть
Цитата (Renden @ 27.06.2011 - 14:47)
Array(
[0] => Название товара
[1] => Остаток на начало
[2] => Оборот приход внешний
[3] => Оборот приход перемещение
[4] => N
[N] => N
)


smile.gif

Спустя 8 минут, 1 секунда (27.06.2011 - 15:06) bulgakov написал(а):
Даже если шаблон не будет таким а таким каким его предоставил ТС то все равно можно избавиться от начальных и конечных ненужных символов разбить строку по двоеточиям сформировать массив и из этого массива составить другой с нужным расположением ячеек. Например сначала будет массив вида:



Array(){
[0]=>'Название товара'
[1]=>'Остаток на'
[2]=>'Оборот приход'
[3]=>'Оборот приход'
[4]=>'Оборот касса'
[5]=>'начало'
[6]=>'внешний'
[7]=>'перемещение'
[8]=>'продажа'
}


А уже из этого массива можете спокойно сформировать нужный вам.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.