保持多字符分隔符

时间:2015-06-29 15:51:50

标签: php

我有一个字符串

$string = "hi!n!my!n!name!n!is!n!bob";

我想把它分开'!n!' 我尝试过类似的东西:

$splitstring = preg_split("!n!", $string,-1, PREG_SPLIT_DELIM_CAPTURE);

但它会删除'n'的所有实例而不是!n! 所以,如果我print_r数组,它看起来像:

Array(
[0]=>hi!
[1]=>!my!
[2]=>!
[3]=>!ame!
[4]=>!is!
[5]=>!bob
)

它会将每次出现'n'分开。不!! (一个3个字符的分隔符)就像我想要的那样。

有谁知道如何解决这个问题?提前致谢

3 个答案:

答案 0 :(得分:0)

你可以使用explode:http://php.net/explode

$parts = explode('!n!', $string);

要重现您开始使用的字符串,可以执行以下操作:

$string = implode('!n!', $parts);

最后,如果您希望保留分隔符,则可以随时将其重新添加。目前尚不清楚您是否希望它们位于每个实体的开头或结尾(作为您的开始) string将它们纯粹用作分隔符)。你可以这样做:

foreach ($parts as &$part)
{
    $part = '!n!'.$part.'!n!';
}

答案 1 :(得分:0)

您需要在正则表达式中使用分隔符(例如/):

$splitstring = preg_split("/!n!/", $string,-1, PREG_SPLIT_DELIM_CAPTURE);

答案 2 :(得分:0)

好的,首先感谢您的所有回复。使用/工作但它删除了所有分隔符(!n!)。我怀疑PREG_SPLIT_DELIM_CAPTURE不起作用。所以,我找到了this。修复方法如下:

$ splitstring = preg_split(" /(!n!)/",$ string,-1,PREG_SPLIT_DELIM_CAPTURE);

将括号括在输出的分隔符​​周围:

[0]hi
[1]!n!
[2]my
[3]!n!
[4]name
[5]!n!
[6]is
[7]!n!
[8]bob

希望这有帮助