2017-01-20 13 views
0
$content = "[2][6][11]"; 

これは値[2]、[6]、[11]の配列に分割したいと考えています。分割文字列とメイク配列、正規表現

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

間違った出力:配列([0] => [2 [1] => [5 [2] =>)

正規表現で間違っているものをすべてのヘルプ。

ありがとうございました。

+0

'preg_split( "/ \ hの* [] [] /"、$コンテンツ、-1、PREG_SPLIT_NO_EMPTY) ' – devpro

+1

中括弧の間の数字であることが保証されている場合、この正規表現パターンは' /(\ [\ d + \])/ 'で動作します。 – jhmckimm

+0

中括弧の中に数字だけがあると仮定して 'preg_split(" /(\ [[0-9] + \])/ "、$ content);' –

答えて

1

あなたはこの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+]~

0

また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] 
) 
関連する問題