我有一个字符串
$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个字符的分隔符)就像我想要的那样。
有谁知道如何解决这个问题?提前致谢
答案 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
希望这有帮助