拆分两个字符之间的字符串

时间:2009-12-05 00:27:46

标签: php

好的,这个应该非常容易,但我不知道我在找什么......

我想在两个字符之间分割一个字符串

$string = "blah blah blah (blorp) blah blah (bloop) blah blah (bam)";

retruns :

array
1 -> blorp
2 -> bloop
3 -> bam

我不需要括号中的任何内容。

谢谢!

亚瑟

5 个答案:

答案 0 :(得分:5)

您可以使用正则表达式执行此操作:

$string = "blah blah blah (blorp) blah blah (bloop) blah blah (bam)";
preg_match_all("/\((.*?)\)/", $string, $result_array);

print_r( $result_array[1] ); // $result_array[0] contains the matches with the parens

这将输出:

Array
(
    [0] => blorp
    [1] => bloop
    [2] => bam
)

我的正则表达式使用非贪婪的选择器:(.*?),这意味着它将尽可能地“抓取”。这样可以防止它耗尽所有)并抓住开场(和结束)之间的所有内容。

答案 1 :(得分:2)

你可以使用preg_match_all(只是快速草稿......):

preg_match_all("|\([^)]+\)|", $string, $result_array);

答案 2 :(得分:2)

全部使用正则表达式,这里没有正则表达式

$string = "blah blah blah (blorp) blah blah (bloop) blah blah (bam)";
$s = explode(")",$string);
foreach ( $s as $k=>$v ){
    $m= strpos($v,"(" );
    if ($m){
        print substr( $v, $m+1  )  . "\n"  ;
    }
}

答案 3 :(得分:1)

如果你想要括号中的所有内容,那么你应该使用正则表达式。在你的情况下,这将做厚:

preg_match_all('/\(.*?\)/', $string, $matches);

答案 4 :(得分:1)

http://php.net/manual/en/function.preg-match-all.php

$matches = array();
$num_matched = preg_match_all('/\((.*)\)/U', $input, $matches);