Вы можете использовать preg_match_all
[ 1 ], чтобы получить содержимое между всеми @[]
частями. Затем implode
[ 2 ] результат для получения строки, разделенной запятой.
<?php
define('FIRST_MATCH_GROUP', 1);
$content = "Hello Guys how are you @[6] i hope you are doing well @[9]";
$tags = [];
preg_match_all("/@\[(.)\]/", $content, $tags); // Value under @[]
$tags = implode(',', $tags[FIRST_MATCH_GROUP]);
var_dump($tags);
Рабочий пример:
https://3v4l.org/7kYH6
Выход для 5.6.38 - 7.3.0rc3
строка (3) "6,9"
Regex объяснение:
https://regex101.com/r/cxH6L3/1/
/ @ [(.)] /
@ соответствует символу @ буквально (с учетом регистра)
\ [соответствует символу [буквально (с учетом регистра)
1-я группа захвата (.)
. соответствует любому символу (кроме ограничителей строки)
\] соответствует символу] буквально (с учетом регистра)
РЕДАКТИРОВАТЬ: Для нескольких чисел от @[]
вам необходимо настроить регулярное выражение на @\[(.+)\]
и добавить флаг Ungreedy, см. https://regex101.com/r/cxH6L3/2 и https://3v4l.org/aj0Ln