假设我有以下内容:
$string = "(a) (b) (c)";
我将如何分解它以获取括号内的内容。如果字符串的内容仅由一个符号而不是 2 分隔,我会使用:
$string = "a-b-c";
explode("-", $string);
但是,当使用 2 个分隔符来封装要爆炸的项目时,如何做到这一点?
您必须使用preg_split
orpreg_match
代替。
例子:
$string = "(a) (b) (c)";
print_r(preg_split('/\\) \\(|\\(|\\)/', $string, -1, PREG_SPLIT_NO_EMPTY));
大批 ( [0] => 一个 [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"
}
如果您知道字符串将始终采用 形式(a) (b) (c)
,每对括号之间恰好有一个空格,并且开头或结尾没有字符,则可以避免使用正则表达式函数:
$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 )
也许将 preg_split 与交替模式一起使用:
你可以试试preg_split()
功能。
如果你的分隔符是这样一致的,那么你可以这样做
$string = "(a) (b) (c)";
$arr = explode(") (", $string);
// Then simply trim remaining parentheses off.
$arr[0] = trim($arr[0], "()");
end($arr) = trim($arr[0], "()");