0

基本的に、検索してその中の 2 番目の出現箇所をすべて削除する必要がある文字列があります。

私の文字列は次のようになります($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間に 2 つの行が含まれています。文字列を検索し、すべての SECOND のみを置き換えて、文字列が次のようになるようにしたいと\n思います。

question1,answer1,answer2,answer3,answer4
question2,answer1,answer2,answer3,answer4
question3,answer1,answer2,answer3,answer4

これは可能ですか?もしそうなら、どうすればいいですか?

4

2 に答える 2

3

特定のケースでは、2 つの改行を 1 つの改行に置き換えたい場合があります。

$string = str_replace("\n\n", "\n", $string);

より複雑な正規表現ソリューションでは、任意の数の同時改行を折りたたむことができます。

preg_replace("/\n+/", "\n", "foo\n\nbar\n\n\n\n\nblee\nnope");
于 2013-09-01T10:26:37.427 に答える
1

Adam の答えは、UNIX のようなシステムでは正しいですが、Windows では異なる行末を持つことができます。私の正規表現は少しさびていますが、これは UNIX と Windows で動作するはずです。

$string = preg_replace('/[\n\r]{2}/', '\n', $string);正確な 2 行末を置換

$string = preg_replace('/[\n\r]+/', '\n', $string);1 つ以上の行末を置き換えます

于 2013-09-01T10:31:31.177 に答える