\n
複数行の文字列を変換して、 2 つの最後の閉じ括弧が連続して発生した後に))
改行を挿入しようとしてい))\n
ます。
また、'))' の直前に ')' がある可能性が高く、')))' を効果的に作成します。
これらの 2 つまたは 3 つの括弧は、 、 、 、 などの不確定な長さの空白によって「広がる」場合もあれば、そうで))
ない) )
場合)))
も) ) )
あり)) )
ます) ))
。
私は次のことを試しました:
//Example message
$message = '(item (name 286) (Index 31) (Image "item001") (class money coin) (code 4 110 0) (country 2) (plural 1) (buy 0))
(item(name 7904)(Index 7904) (specialty (Dex 10(defense 55)(hp 3500)(dodge 71) ))
(item(name 7905)(Index 7905)(country 2)
(level 80)(specialty(hp 3400) ) )
(item(name 7906)(Index 7906)(level 80) (specialty(Str 10)) ) ';
// Converts all lines into one line
$message = preg_replace("/[\r\n]*/","",$message);
// Replace '))' with '))\n' - doesn't work.
$message = preg_replace("/[)s+)]s*/","\n",$message);
$InititemLines = explode("\n", $message);
for ($line = 0; $line < count($InititemLines); $line++) {
echo "Line #<b>{$line}</b> : " . $InititemLines[$line] . "<br />\n";
}
すべての行を 1 つに変換するには、次を使用しました。
$message = preg_replace("/[\r\n]*/","",$message);
次に、に置き換えるため))
に))\n
、次のことを試しました(ただし、機能しません):
$message = preg_replace("/[)s+)]s*/","))\n",$message);
出力を次のようにしたい:
Line #0: (item (name 286) (Index 31) (Image "item001") (class money coin) (code 4 11 0 0) (country 2) (plural 1) (buy 0))
Line #1: (item(name 7904)(Index 7904) (specialty (Dex 10)(defense 55)(hp 3500)(dodge 71) ))
Line #2: (item(name 7905)(Index 7905)(country 2)(level 80)(specialty(hp 3400) ) )
Line #3: (item(name 7906)(Index 7906)(level 80) (specialty(Str 10)) )