Regex Split String - PullRequest
       4

Regex Split String

0 голосов
/ 06 декабря 2010

Я впервые использую регулярное выражение и хочу разбить строку на три переменные

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

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

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

Я действительно схожу с ума,поэтому ваша помощь более чем приветствуется ;-) С уважением, Саймон

Ответы [ 3 ]

3 голосов
/ 06 декабря 2010

А как насчет этого? Это будет работать для переменной количества предметов.

$result = explode('||', preg_replace('/(^\[\||\|\]$)/', '', $loadedList));
2 голосов
/ 06 декабря 2010

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

preg_match_all("/\[\|(.*)\|\|(.*)\|\|(.*)\|\]/", $loadedList, $result);
0 голосов
/ 06 декабря 2010

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

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

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

для сопоставления со всеми не | / [ / ] строками, т.е. всем, кроме |, [ или ].

...