5

私が次のものを持っているとしましょう:

$string = "(a) (b) (c)";

括弧内の内容を取得するには、どのように分解しますか。文字列の内容が2つではなく1つの記号で区切られている場合は、次のように使用します。

$string = "a-b-c";
explode("-", $string);

しかし、2つの区切り文字を使用して展開するアイテムをカプセル化する場合、これを行うにはどうすればよいですか?

4

7 に答える 7

7

preg_splitまたはを使用する必要がありpreg_matchます。

例:

$string = "(a) (b) (c)";
print_r(preg_split('/\\) \\(|\\(|\\)/', $string, -1, PREG_SPLIT_NO_EMPTY));
配列
((
    [0] => a
    [1] => b
    [2] => c
)。

順序が重要であることに注意してください。

于 2010-07-25T18:11:38.567 に答える
4

ネスト括弧がない場合は、正規表現を使用できます。

$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を参照してください

于 2010-07-25T18:15:13.827 に答える
3

文字列が常に形式(a) (b) (c)であり、括弧の各ペアの間に正確に1つのスペースがあり、先頭または末尾に文字がないことがわかっている場合は、正規表現関数を使用する必要がなくなります。

$myarray = explode(') (', substr($mystring, 1, -1));
于 2010-07-25T18:18:31.150 に答える
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 )
于 2016-09-20T07:35:29.370 に答える
0

区切り文字がそのように一貫している場合は、これを行うことができます

$string = "(a) (b) (c)";
$arr = explode(") (", $string);
// Then simply trim remaining parentheses off.
$arr[0] = trim($arr[0], "()");
end($arr) = trim($arr[0], "()");
于 2010-07-25T18:21:14.627 に答える
0

おそらく、交互のパターンでpreg_splitを使用します。

http://www.php.net/manual/en/function.preg-split.php

于 2010-07-25T18:11:39.457 に答える
0

機能を試すことができpreg_split()ます。

于 2010-07-25T18:11:40.107 に答える