我已经苦苦挣扎了半天,似乎找不到答案。请帮个忙。:)
我有一个字符串,它由几个用大括号括起来的句子组成。看起来像这样:
{超级骗子额外的文本。}{另一个可怕的文本!}{我们又来了…}
现在我想把它分开。
我发现我可以搜索.}{等模式,所以我这样做了:

$key = preg_split('/[!?.]{1,3}\} \{/',$key);

但是这样我就失去了定界符,我失去了所有的定界符。???等在句子的结尾。
我试着这样做:
$key = preg_split('/([!?.]{1,3}\} \{)/',$key, -1, PREG_SPLIT_DELIM_CAPTURE);
$sentences = array();

for ($i=0, $n=count($key)-1; $i<$n; $i+=2) {
$sentences[] = $key[$i].$key[$i+1]."<br><br>";
}

但这段代码永远不会加载,所以我发现它有问题。但是什么?
提前谢谢。

最佳答案

你不需要分割这个,只需调用preg_match()就可以了。匹配的组将产生一个数组。分组在()[^}]+中的表达式匹配下一个}之前(但不包括)的所有字符。所需的输出值将位于$matches[1]子数组中。

$input = "{Super duper extra text.} {Awesome another text!} {And here we go again...}";
$matches = array();
preg_match_all('/\{([^}]+)\}/', $input, $matches);
print_r($matches);

Array
(
    [0] => Array
        (
            [0] => {Super duper extra text.}
            [1] => {Awesome another text!}
            [2] => {And here we go again...}
        )

    [1] => Array
        (
            [0] => Super duper extra text.
            [1] => Awesome another text!
            [2] => And here we go again...
        )

)

09-06 00:12