Xii*_*ref 5 php regex string split preg-split
我有一个像这样的字符串aa | bb | "cc | dd" | 'ee | ff',我正在寻找一种方法来分割它,以获得由字符分隔的所有值,|但字符串中包含的除外|。
我们的想法是得到这样的东西[a, b, "cc | dd", 'ee | ff']
我已经在这里找到了类似问题的答案:https ://stackoverflow.com/a/11457952/11260467
然而,我找不到一种方法来适应具有多个分隔符的情况,这里有人在正则表达式方面比我不那么愚蠢吗?
(*SKIP)(*FAIL)通过提供的功能可以轻松完成此操作pcre:
(['"]).*?\1(*SKIP)(*FAIL)|\s*\|\s*
Run Code Online (Sandbox Code Playgroud)
这PHP可能是:
<?php
$string = "aa | bb | \"cc | dd\" | 'ee | ff'";
$pattern = '~([\'"]).*?\1(*SKIP)(*FAIL)|\s*\|\s*~';
$splitted = preg_split($pattern, $string);
print_r($splitted);
?>
Run Code Online (Sandbox Code Playgroud)
并且会产生
Array
(
[0] => aa
[1] => bb
[2] => "cc | dd"
[3] => 'ee | ff'
)
Run Code Online (Sandbox Code Playgroud)
请参阅regex101.com和ideone.com 上的演示。