PHP получить строку между тегом

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

Скажем, у меня есть эта строка

$my_string = "I am with a [id]123[/id] and [id]456[id]"; 

Я хочу получить все число между [id] [/ id]. У меня есть только эта функция, чтобы получить строку между ними.

 function get_string_between($string, $start, $end){ $string = ' ' . $string; $ini = strpos($string, $start); if ($ini == 0) return ''; $ini += strlen($start); $len = strpos($string, $end, $ini) - $ini; return substr($string, $ini, $len); } $fullstring = 'I am with a [id]123[/id] and [id]456[id]'; $parsed = get_string_between($fullstring, '[id]', '[/id]'); 

Но эта функция возвращает только первую строку, найденную в $ fullstring. Может быть, я могу получить 123,456 или массив массива ('123', '456'). Я действительно застрял в этом.

Вы можете просто использовать preg_match_all PHP вместе со следующим регулярным выражением

 ~\[id\](.*?)\[\/id\]~ 

вроде как

 $my_string = "I am with a [id]123[/id] and [id]456[/id]"; preg_match_all("~\[id\](.*?)\[\/id\]~",$my_string,$m); print_r($m[1]);