基本上,我有一个字符串,我需要搜索并删除其中的每一个第二次出现。
以下是我的字符串($s
):
question1,answer1,answer2,answer3,answer4
question2,answer1,answer2,answer3,answer4
question3,answer1,answer2,answer3,answer4
以下是我的代码当前的样子:
$toRemove = array("'n");
$finalString = str_replace($toRemove, "", $s);
正如您所看到的,s
字符串中的每一行之间都包含两个'n
。我想搜索我的字符串,只替换每一个第二个'n
,这样我的字符串就会变成:
question1,answer1,answer2,answer3,answer4
question2,answer1,answer2,answer3,answer4
question3,answer1,answer2,answer3,answer4
这可能吗?如果是,我该怎么做?
在您的特定情况下,您可能只想用一条换行符替换两条换行符:
$string = str_replace("'n'n", "'n", $string);
更复杂的正则表达式解决方案可以折叠任意数量的并发换行符:
preg_replace("/'n+/", "'n", "foo'n'nbar'n'n'n'n'nblee'nnope");
Adam的答案对于类UNIX系统是正确的,但在Windows中可以有不同的行尾。我的Regex有点生疏,但我认为这应该适用于UNIX和Windows。
$string = preg_replace('/['n'r]{2}/', ''n', $string);
替换精确的2行结尾
$string = preg_replace('/['n'r]+/', ''n', $string);
替换1个或多个行尾