我有一个字符串
$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"。不n(3个字符的分隔符)。
有人知道怎么解决这个问题吗?提前感谢
在正则表达式中需要分隔符(例如/
)
$splitstring = preg_split("/!n!/", $string,-1, PREG_SPLIT_DELIM_CAPTURE);
您可以使用爆炸:http://php.net/explode
$parts = explode('!n!', $string);
要复制您开始使用的字符串,可以执行以下操作:
$string = implode('!n!', $parts);
最后,如果你想保留delimeter,你可以随时将它们重新添加进来。目前还不清楚你是希望它们位于每个实体的开头还是结尾(因为你的起始字符串纯粹将它们用作分隔符)。你可以这样做:
foreach ($parts as &$part)
{
$part = '!n!'.$part.'!n!';
}
好的,首先感谢您的回复。使用/有效,但它删除了所有分隔符(!n!)。我怀疑PREG_SPLIT_DELIM_CAPTURE不起作用。所以,我发现了这个。修复方法类似于:
$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
希望这能帮助