php用分隔符分隔字符串

时间:2014-01-20 23:53:59

标签: regex

我有字符串例如:

$stringExample = "(({FAPAGE15}+500)/{GOGA:V18})"
// separete content  { }   

我需要结果是这样的:

$response = array("FAPAGE15","GOGA:V18")  

我认为它必须是:preg_splitpreg_match

2 个答案:

答案 0 :(得分:1)

这是你需要的正则表达式:

\{(.*?)\}

正则表达式示例:

http://regex101.com/r/qU8eB0

PHP:

$str = "(({FAPAGE15}+500)/{GOGA:V18})";

preg_match_all("/\{(.*?)\}/", $str, $matches);

print_r($matches[1]);

输出:

Array
(
    [0] => FAPAGE15
    [1] => GOGA:V18
)

工作示例:

https://eval.in/92516

答案 1 :(得分:1)

您可以使用否定字符类:[^}] (所有不是}

preg_match_all('~(?<={)[^}]++(?=})~', $str, $matches);

$result = $matches[0];

模式细节

~         # pattern delimiter
(?<={)    # preceded by {
[^}]++    # all that is not a } one or more times (possessive)
(?=})     # followed by }
~         # pattern delimiter

注意:占有量词++对于获得好结果并不重要,可以用+代替。您可以找到有关此功能的更多信息here