我想在几个字符(被分割字符串+,~,>和@,但我希望这些字符是返回部分的一部分.
我试过了:
$parts = preg_split('/\+|>|~|@/', $input, PREG_SPLIT_DELIM_CAPTURE);
Run Code Online (Sandbox Code Playgroud)
结果只有2个部分应该有5个,而split-char不是部分[1]的一部分.
我也尝试过:
$parts = preg_split('/\+|>|~|@/', $input, PREG_SPLIT_OFFSET_CAPTURE);
Run Code Online (Sandbox Code Playgroud)
结果是1部分太少(4而不是5),最后部分包含split-char.
没有标志 preg_split,结果几乎是完美的(尽可能多的部分),但所有的分裂字符都消失了.
例:
$input = 'oele>boele@4 + key:type:id + *~the end'; // spaces should be ignored
$output /* should be: */
array( 'oele', '>boele', ' @4 ', '+ key:type:id ', '+ *', '~the end' );
Run Code Online (Sandbox Code Playgroud)
是否有一个spl函数或标志来做这个或我必须自己做一个=(
你错过了limit参数的赋值,这就是为什么它的返回量低于你的预期,试试:
$parts = preg_split('/\+|>|~|@/', $input, -1, PREG_SPLIT_OFFSET_CAPTURE);
Run Code Online (Sandbox Code Playgroud)
$parts = preg_split('/(?=[+>~@])/', $input);
Run Code Online (Sandbox Code Playgroud)
由于您希望分隔符成为下一个分割片段的一部分,因此您的分割点恰好位于分隔符之前,这可以通过使用正面预测轻松完成.
(?= : Start of positive lookahead
[+>~@] : character class to match any of your delimiters.
) : End of look ahead assertion.
Run Code Online (Sandbox Code Playgroud)
实际上,您要求preg_split 在分隔符之前的点处拆分输入字符串.
| 归档时间: |
|
| 查看次数: |
158 次 |
| 最近记录: |