Ant*_*ton 52 php regex preg-split
如何通过分隔符拆分字符串,但如果它被转义则不能?例如,我有一个字符串:
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)
Nik*_*kiC 107
使用黑暗魔法:
$array = preg_split('~\\\\.(*SKIP)(*FAIL)|\|~s', $string);
Run Code Online (Sandbox Code Playgroud)
\\\\.匹配一个反斜杠后跟一个字符,(*SKIP)(*FAIL)跳过它并\|匹配你的分隔符.
Bar*_*ers 11
而不是split(...),IMO更直观地使用某种类似于词法标记器的"扫描"功能.在PHP中,这将是preg_match_all功能.你只是说你想匹配:
\或之外的东西|\后跟a \或|以下演示:
$input = "1|2\\|2|3\\\\|4\\\\\\|4";
echo $input . "\n\n";
preg_match_all('/(?:\\\\.|[^\\\\|])+/', $input, $parts);
print_r($parts[0]);
Run Code Online (Sandbox Code Playgroud)
将打印:
1|2\|2|3\\|4\\\|4
Array
(
[0] => 1
[1] => 2\|2
[2] => 3\\
[3] => 4\\\|4
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4605 次 |
| 最近记录: |