如何通过分隔符拆分字符串,但如果它被转义则不能?例如,我有一个字符串:
1|2\|2|3\\|4\\\|4
Run Code Online (Sandbox Code Playgroud)
分隔符是|和转义分隔符\|.此外,我想忽略逃脱反斜杠,因此\\|在|仍然是一个分隔符.
所以使用上面的字符串,结果应该是:
[0] => 1
[1] => 2\|2
[2] => 3\\
[3] => 4\\\|4
Run Code Online (Sandbox Code Playgroud) 是否存在从PHP解析命令参数的本地"PHP方式" string?例如,给出以下内容string:
foo "bar \"baz\"" '\'quux\''
Run Code Online (Sandbox Code Playgroud)
我想创建以下内容array:
array(3) {
[0] =>
string(3) "foo"
[1] =>
string(7) "bar "baz""
[2] =>
string(6) "'quux'"
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试过利用token_get_all(),但PHP的变量插值语法(例如"foo ${bar} baz")在我的游行中几乎下雨了.
我完全知道我可以编写自己的解析器.命令参数语法是超级简单的,但如果有一个现有的本地方法来做,我更喜欢滚动我自己.
编辑:请注意,我正在寻找解析来自a string,而不是shell /命令行的参数.
编辑#2:下面是一个更全面的预期输入示例 - >参数输出:
foo -> foo
"foo" -> foo
'foo' -> foo
"foo'foo" -> foo'foo
'foo"foo' -> foo"foo
"foo\"foo" -> foo"foo
'foo\'foo' -> foo'foo
"foo\foo" -> foo\foo
"foo\\foo" -> foo\foo
"foo foo" -> foo foo
'foo foo' -> foo foo
Run Code Online (Sandbox Code Playgroud)