確定這應該是非常容易的,但我不知道我在找...在兩個字符之間拆分字符串?
我想兩個字符
$string = "blah blah blah (blorp) blah blah (bloop) blah blah (bam)";
retruns :
array
1 -> blorp
2 -> bloop
3 -> bam
我不需要任何分裂之間串起來等於括號內的所有內容。
謝謝!
亞瑟
確定這應該是非常容易的,但我不知道我在找...在兩個字符之間拆分字符串?
我想兩個字符
$string = "blah blah blah (blorp) blah blah (bloop) blah blah (bam)";
retruns :
array
1 -> blorp
2 -> bloop
3 -> bam
我不需要任何分裂之間串起來等於括號內的所有內容。
謝謝!
亞瑟
您可以用正則表達式做到這一點:
$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
)
我的正式表達sion使用非貪婪的選擇器:(.*?)
這意味着它將盡可能「小」地抓取。這使得它從開(
和結束)
多的話怎麼過遠間吃了所有的)
,抓住一切。
你可以使用preg_match_all喜歡的東西(只是一個快速的草案...):
preg_match_all("|\([^)]+\)|", $string, $result_array);
如果你想在括號中的一切,那麼你就應該使用正則表達式。在你的情況,這會做厚:
preg_match_all('/\(.*?\)/', $string, $matches);
http://php.net/manual/en/function.preg-match-all.php
$matches = array();
$num_matched = preg_match_all('/\((.*)\)/U', $input, $matches);
所有使用正則表達式,這裏是一個沒有正則表達式
$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" ;
}
}
嘿@道格 - neiner你能幫助我,如果我需要等等術語也陣列內的東西。是否有可能通過調整它來使用相同的preg_match_all或者我必須使用爆炸? _thanks in advance_ – xyz 2014-02-27 09:04:28