2016-02-03 48 views
4

我一直在尋找很多,但找不到類似於我的問題的任何東西。我發現這link,但我不認爲他們真的回答了這個問題。PHP獲取標籤之間的字符串[多個標籤在一個字符串中]

讓說,我有這個字符串

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

我想所有的[ID] [/ I D]之間的數字。我只有這個函數來獲取字符串。

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')。我真的被這個困住了。

+0

你可以用'PHP的preg_match_all'功能有以下的正則表達式['〜\ [ID \](。*?)\ [\/id \]〜'](https://3v4l.org/bJmoO) –

+0

OMG。請在下面回答,以便我可以接受你的答案。 –

+0

其工作..謝謝, –

回答

6

您可以簡單地使用PHP的preg_match_all功能連同下面的正則表達式

~\[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]); 
+1

謝謝,這是我一直在尋找。你是個天才! –

相關問題