2010-12-06 3 views
0

Я использую первый раз регулярное выражение, и я хочу, чтобы разделить строку в три ВарсеRegex Сплит Строка

Target: '[|'.$1.'||'.$2.'||'.$3.'|]'; //each single var. 

, что у меня есть:

preg_match_all("[|(.*)||(.*)||(.*)|]", $loadedList, $result); 

Я действительно получаю с ума, Therfore ваша помощь более чем Wellcome ;-) относительно Simon

ответ

3

Что об этом? это будет работать для переменной amout предметов.

$result = explode('||', preg_replace('/(^\[\||\|\]$)/', '', $loadedList)); 
2

Вам нужно бежать специальные символы:

preg_match_all("/\[\|(.*)\|\|(.*)\|\|(.*)\|\]/", $loadedList, $result); 
+0

Вам также нужны разделители. – 2010-12-06 17:47:45

+0

@Tim Хорошая точка - отредактировано это. Спасибо. – Benubird 2010-12-07 09:10:46

0

| - это метасимвол в регулярных выражениях (что означает «или»), поэтому его необходимо экранировать, если он предназначен для соответствия буквально. Кроме того, [...] является регулярным выражением синтаксиса класса символов, что означает «любой один из символов между [...]). И, наконец, вы должны разделителями вокруг регулярного выражения.

Вы можете попробовать

preg_match_all("/[^\[\]\|]+/") 

соответствовать всем не- |/[/] строки, то есть все, кроме |, [ или ].

+0

Он действительно хотел ровно три матча, но это хороший общий случай. – Benubird 2010-12-07 09:29:20

Смежные вопросы