【发布时间】:2014-06-15 19:53:58
【问题描述】:
简介
在 PHP 中,我将如何使用这种语法分割一行:
<As's\\as'dsd> asqwedasd <sa sdasd> [a sadasd] [<asdsad> [as ddsd]] 'asdsad assd'
喜欢这个吗?
array(5) {
[0]=>
string(14) "<As's\\as'dsd>"
[1]=>
string(9) "asqwedasd"
[2]=>
string(10) "<sa sdasd>"
[3]=>
string(10) "[a sadasd]"
[4]=>
string(20) "[<asdsad> [as ddsd]]"
[5]=>
string(13) "'asdsad assd'"
}
更详细的解释
现在我不擅长解释,所以我希望上面的例子能很好地解释我的情况,你不需要我的解释,但无论如何:
我想用除某些特定空格之外的每个空格来分割这个字符串:
- 如果空格在尖括号或方括号内,它应该 不要分割那条线。请参见第 2 和第 3 条。
- 括号内可能有一个括号。这应该 只是作为一个完整的字符串返回。见第 4 条。
- 可能有一些项目不在括号中。见第 1 条。
- 未用括号括起来的项目将不包含空格,除非用撇号引用。看 5 号。
- 项目可以包含所有 UTF-8 字符,除了 [ ]
可能有帮助的来源
Explode string except where surrounded by parentheses?
先感谢您!
我知道这是一项艰巨的任务,但我自己完全不知道该怎么做。
【问题讨论】:
-
在这种情况下只需要学习如何使用正则表达式,没有更多的东西。这是一些extremely useful information regarding lookahead and lookbehinds的链接
-
@EugenRieck 我在这里读到
preg_split()不知道引号中的内容。 -
你可能真的需要一个解析器。 google.ie/…
-
我喜欢模块化正则表达式,here 是您可以与
preg_split()一起使用的解决方案。很抱歉没有解释,太忙了:) -
@HamZa 这是一个很好的解决方案。 :)