2012-03-02 3 views
0

У меня есть эта строка ++++++1DESIGNRESULTSM25Fe415(Main)Раскол в серии PHP

и у меня есть аналогичные строки около 2000 строк, из которых я хочу разделить эти ..

[++++++] [1] [DESIGNRESULTS] [M25] [Fe415] [(Main)] 

из шаблона только второй 4h и пятое значение изменения

например .. ++++++2DESIGNRESULTSM30Fe418(Main) и т.д ..

, что я на самом деле хочу это:

  1. Разделить первое значение [++++++]
  2. Разделить значение после того, как 4 Характера [DESIGNRESULTS] так плохо получить это [M25]
  3. Разделить значение до 4 Характеров [(Main)] так плохо получить это [Fe415]
  4. После всего этого сделайте окончательный кусок куска в массиве.

подобный выход, что я хочу

Array ([0] => 1 [1] => M25 [2] => Fe415) 

Пожалуйста, помогите мне с этим ...

Спасибо заранее :)

+0

Какой код вы пробовали до сих пор? –

+0

'preg_split ('([++++++] + [0-9])', $ st, -1);' im new для кодирования ...; ( –

ответ

1

Данные расколоть потребности немного неясно. Регулярное выражение, которое будет получать отдельные матчи на каждом из кусков сначала указать:

(\++)(\d)(DESIGNRESULTS)(M\d\d)(Fe\d\d\d)(\(Main\)) 

Если вам нужно только два вы просите в конце концов, вы можете использовать

(\d)DESIGNRESULTS(M\d\d)(Fe\d\d\d) 

Вы могли бы также замените \d\d на \d+, если количество цифр неизвестно.

Однако, основываясь на ваших примерах, похоже, что каждый струнный кусок является согласованной длиной. Было бы еще быстрее использовать

array(
    substr($string, 6, 1) 
    //... 
) 
0

Как об этом

$str = "++++++1DESIGNRESULTSM25Fe415(Main)"; 

$match = array(); 
preg_match("/^\+{0,}(\d)DESIGNRESULTS(\w{3})(\w{5})/",$str,$match); 
array_shift($match); 
print_r($match); 
+0

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

+0

Какая у вас полная строка? –

+0

вот так 1DESIGNRESULTSM25Fe415 (Main) Fe415 (раздел) ДЛИНА: 1500.0mmCROSSSECTION: 300.0mmX600.0mmCOVER: 40.0mm ** GUIDINGLOADCASE: 15ENDJOINT: 13SHORTCOLUMNREQD.STEELAREA: 5472.00Sq.mm.REQD.CONCRETEAREA: 174528.00Sq.mm.MAINREINFORCEMENT:. Provide12-25dia (. 3,27%, 5890.49Sq.mm) (Equallydistributed)
Мне нужно, чтобы получить некоторые значения из строки в порядке ... это то, что я пытаюсь достичь ... –