0

前の質問 (文字列から改行を削除)とは少し違った質問をしたいと思います。

新しい行のテキストの前にスペース " " がある場合を除いて、文字列から新しい行を削除したいと思います (これは、これが新しい段落であることを示します。以下に例を示します。

   This is the first bit of text. It continues for a while until
there is a line break. It then continues for a bit longer but 
the line break also continues alongside it. 
   What you see here is the second paragraph. You'll notice that 
there is a space to mark the beginning of the paragraph. However
When joining these lines, a computer may not realize that the next
paragraph exists in this way. 
4

3 に答える 3

3
$result = preg_replace('/\n++(?! )/', ' ', $subject);

まさにこれを行います。

説明:

\n++  # Match one or more newlines; don't backtrack
(?! ) # only if it's impossible to match a space afterwards
于 2013-09-15T14:56:35.270 に答える
0

ファイルにリトルエンディアン BOM が埋め込まれているようです。

それらを削除するか、それらなしでファイルを書き直す必要があります。

このような正規表現を使用して、それらを取り除くことができる場合があります\xFF\xFE

これは、16 進エディターでのテキストの一部です。

 00 61 00 6C 00 6F 00 6E 00 67 00 73 00 69 00 64 
 00 65 00 20 00 69 00 74 00 2E 00 20 00 0D 00 20 
 00 FF FE 20 00 FF FE 20 00 FF FE 57 00 68 00 61 
 00 74 00 20 00 79 00 6F 00 75 00 


 alongside it. 
    What you
于 2013-09-15T20:04:23.803 に答える
0

end-line char (PHP_EOL 定数を使用) でテキストを分解し、trimを使用します。

$lines = explode(PHP_EOL,$text);
$lines = array_map(function($line){
    return trim($line);
},$lines);
$text = implode(PHP_EOL,$lines);

// or if you are not familiar w/ array_map, simple use foreach
$lines = array();
foreach(explode(PHP_EOL,$text) as $line)
     $lines[] = trim($line);
$text = implode(PHP_EOL,$lines);
于 2013-09-15T14:58:23.027 に答える