私が次のものを持っているとしましょう:
$string = "(a) (b) (c)";
括弧内の内容を取得するには、どのように分解しますか。文字列の内容が2つではなく1つの記号で区切られている場合は、次のように使用します。
$string = "a-b-c";
explode("-", $string);
しかし、2つの区切り文字を使用して展開するアイテムをカプセル化する場合、これを行うにはどうすればよいですか?
preg_splitまたはを使用する必要がありpreg_matchます。
例:
$string = "(a) (b) (c)";
print_r(preg_split('/\\) \\(|\\(|\\)/', $string, -1, PREG_SPLIT_NO_EMPTY));
配列
((
[0] => a
[1] => b
[2] => c
)。
順序が重要であることに注意してください。
ネスト括弧がない場合は、正規表現を使用できます。
$string = "(a) (b) (c)";
$res = 0;
preg_match_all("/\\(([^)]*)\\)/", $string, $res);
var_dump($res[1]);
結果:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
http://www.ideone.com/70ZlQを参照してください
文字列が常に形式(a) (b) (c)であり、括弧の各ペアの間に正確に1つのスペースがあり、先頭または末尾に文字がないことがわかっている場合は、正規表現関数を使用する必要がなくなります。
$myarray = explode(') (', substr($mystring, 1, -1));
以下のコードを試してください。
<?php
$s="Welcome to (London) hello ";
$data = explode('(' , $s );
$d=explode(')',$data[1]);
print_r($data);
print_r($d);
?>
出力:
Array ( [0] => Welcome to [1] => London) hello )
Array ( [0] => London [1] => hello )
区切り文字がそのように一貫している場合は、これを行うことができます
$string = "(a) (b) (c)";
$arr = explode(") (", $string);
// Then simply trim remaining parentheses off.
$arr[0] = trim($arr[0], "()");
end($arr) = trim($arr[0], "()");
おそらく、交互のパターンでpreg_splitを使用します。
機能を試すことができpreg_split()ます。