3

我已经为此苦苦挣扎了半天,似乎找不到答案。请帮助一个菜鸟。:)

我有一个字符串,它由几个大括号中的句子组成。它看起来像这样:

{Super duper extra text.} {真棒另一个文本!} {我们又来了......}

现在我想拆分它。

我发现我可以搜索 .} { 等模式。所以我这样做了:

$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>";
}

但是这段代码永远不会加载,所以我认为它有问题。但是什么?

提前致谢。

4

3 回答 3

5

您不需要拆分它,只需调用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...
        )

)
于 2012-06-13T17:38:18.910 回答
2

我怀疑你需要preg_split()这个。根据您的描述,听起来像:

 $array = explode('} {', trim($string, '{}'));

...将完成这项工作。

于 2012-06-13T17:39:55.730 回答
0

试试这个工作,在中间大括号正斜杠之前使用。

$keywords = preg_split("/[\{\}]/", "{hypertext} language, programming");
print_r($keywords);
于 2014-01-10T13:12:12.180 回答