我有以下字符串:
$string = "Hello from {me} to {you}";
我想要的是一个带有大括号之间的单词的数组(当然没有大括号。
array(2) {
[0]=>
string(2) "me"
[1]=>
string(3) "you"
}
我尝试了以下模式,但它只显示了一个单词(带括号)。
/\{([^}]+)\}/
或
/\{(\s*?.*?)*?\}/
我是正则表达式的新手。
由于
答案 0 :(得分:2)
使用preg_match_all
。在下面的代码中,您需要$results
:
$raw_string = "Hello from {me} to {you}";
$pattern = "/{(.*?)}/"; //will match everything in { }
if(preg_match_all($pattern,$raw_string,$matches)):
$results = $matches[1];
else:
//no matches
endif;
答案 1 :(得分:1)
您需要使用git stash
中的第三个参数来获取数组中的匹配值。
preg_match_all
哪个产生,
<?php
$string = "Hello from {me} to {you}";
preg_match_all('/\{([^}]+)\}/', $string, $matches);
var_dump($matches);
?>
要获得干净的版本,
array(2) { [0]=> array(2) { [0]=> string(4) "{me}" [1]=> string(5) "{you}" } [1]=> array(2) { [0]=> string(2) "me" [1]=> string(3) "you" } }
阅读材料
答案 2 :(得分:0)
$ string =&#34;您好{me}至{you}&#34;;
preg_match_all(&#39; / {([^}] +)} /&#39;,$ string,$ matches);
的print_r($比赛[计数($匹配)-1]);