我已经在这半天努力了,我似乎无法找到答案。请帮助一个菜鸟。 :)
我有一个字符串,其中包含几个用大括号括起来的句子。它看起来像这样:
{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>";
}
但是这段代码永远不会加载,所以我收集了一些错误。但是什么?
提前致谢。
答案 0 :(得分: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...
)
)
答案 1 :(得分:2)
我怀疑你需要preg_split()
。根据你的描述,听起来像是:
$array = explode('} {', trim($string, '{}'));
......将完成这项工作。
答案 2 :(得分:0)
尝试这是有效的,在中间花括号前斜线之前使用。
$keywords = preg_split("/[\{\}]/", "{hypertext} language, programming");
print_r($keywords);