Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помощь в составлении регулярки
Форумы портала PHP.SU » PHP » Регулярные выражения » Помощь в составлении регулярки

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

1. Kennedy - 01 Октября, 2014 - 09:25:22 - перейти к сообщению
Доброго времени суток!

Со вчерашнего вечера бьюсь над составлением регулярки, но до конца не могу ее добить. Need help Улыбка

Имеется что-то вроде этого:

Цитата:
<!tag
one:100
two-three:50
-
four-five:50
-
six:10
tag!>


Нужно было сделать что-то вроде этого:

Цитата:
Первая часть:
[tag=*]
one:100
two-three:50
[/tag]

Вторая часть:
[tag=*]
four-five:50
[/tag]

Третья часть:
[tag=*]
six:10
[/tag]


В один момент мне даже показалось, что я решил эту задачу, вырезая знаки '-', а то что между ними, вставляя в нужные места. До тех пор, пока в нужных строках не оказались фразы, тоже содержащие '-' Недовольство, огорчение Тут мой мозг отказался дальше работать.

Заранее благодарю Улыбка
2. tato - 01 Октября, 2014 - 09:52:46 - перейти к сообщению
Если формат прям такой, то:
PHP:
скопировать код в буфер обмена
  1.  
  2. $str = '<!tag
  3. one:100
  4. two-three:50
  5. -
  6. four-five:50
  7. -
  8. six:10
  9. tag!>';
  10.        
  11. $str = explode(PHP_EOL, $str);
  12. print_r($str);
  13.  


результатом будет массив:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. Array
  3.         (
  4.             [0] => <!tag
  5.            [1] =>  one:100
  6.             [2] =>  two-three:50
  7.             [3] =>  -
  8.             [4] =>  four-five:50
  9.             [5] =>  -
  10.             [6] =>  six:10
  11.             [7] =>  tag!>
  12.         )
  13.  


А дальше разбирайте как хотите
3. Kennedy - 01 Октября, 2014 - 10:32:41 - перейти к сообщению
tato
Спасибо, что откликнулись, но немного не то. Скажем так, в арсенале нет массивов, БД и прочего Улыбка Только регулярки.

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

Цитата:
(<!tag)(([^-])+[^-])(-)(([^-]|\n)+[^-])(-)(([^-]|\n)+[^tag!>])(tag!>)


Но это работает только в том случае, если в нужных строках нет "-".
4. tato - 02 Октября, 2014 - 00:52:17 - перейти к сообщению
Kennedy, ну если опять таки формат строки такой, то по переводу строки смотрите
\n(-)\n

 

Powered by ExBB FM 1.0 RC1