Regex для получения информации в квадратных скобках - PullRequest
2 голосов
/ 19 мая 2011

Я пытаюсь сделать что-то вроде шорткода в WordPress, и я ищу регулярное выражение, которое возьмет что-то вроде [title:This is a title] и превратит его в This is a title.

Было бы также полезно, если бы кто-то мог предложить способ взять что-то вроде [code:some code] и превратить его в массив в виде массив ( [0] => «код» [1] => «некоторый код») или же массив ( 'code' => 'некоторый код'

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

Спасибо

1 Ответ

4 голосов
/ 19 мая 2011
preg_replace('/\[.*?:(.*?)\]/', '$1', $str);

CodePad .

Если вы хотите захватить текст перед двоеточием, просто заключите его в скобки, и он станет группой захвата 1.

Обновление

Я хочу использовать preg_match вместо preg_replace

Вы хотите использовать preg_match_all(), чтобы получить все совпадения.

preg_match_all('/\[(.*?):(.*?)\]/', $str, $matches);

Ideone .

В качестве альтернативы, вы можете дать им именованные группы захвата.

preg_match_all('/\[(?P<identifier>.*?):(?<body>.*?)\]/', $str, $matches);

Ideone .

...