разбить строку и сделать массив, регулярное выражение

$content = "[2][6][11]";

Это я хотел бы разделить на массив со значениями [2], [6] и [11].

preg_split("/\[*\]/i", $content);

Неверный вывод: Array ([0] => [2 [1] => [5 [2] =>)

Любая помощь, что не так с регулярным выражением.

Благодарю.

0

Решение

Вы можете использовать lookarounds для этого split:

$content = "[2][6][11]";
print_r(preg_split('/(?<=\])(?=\[)/', $content));

Выход:

Array
(
[0] => [2]
[1] => [6]
[2] => [11]
)
1

Другие решения

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

print_r(preg_split('~(?<=])(?=\[)~', $content));

Обратите внимание, что если вы уже знаете, как отформатирована ваша строка, вы также можете использовать preg_match_all с более простым рисунком: ~\[\d+]~

1

Вы также можете сделать это с preg_match_all :

$content = "[2][6][11]";
preg_match_all("/\[.*\]/Ui", $content, $matches);
$result = $matches[0];
print_r($result);

Выход:

Array
(
[0] => [2]
[1] => [6]
[2] => [11]
)
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector