正規表現での改行数を求めるにあたって
以下の文字列がフォームからPOSTされたとします。
-------------------
1
2
3
4
5
-------------------
ポストされた文字列が$strに格納されているとして、
以下を実行しました。
-------------------
print preg_match_all("[\n\r]", $str, $dummy);
print preg_match_all("[\r\n]", $str, $dummy);
print preg_match_all("[\r]", $str, $dummy);
print preg_match_all("[\n]", $str, $dummy);
-------------------
結果はこうなりました。
-------------------
6
6
10
10
-------------------
どうやらマッチパターンが"[\n\r]"と"[\r\n]"の場合は空白行の数を、
"[\r]"と"[\n]"の場合は純粋に改行数を返しているようです。
どうしてこのような差が出るのでしょうか?
文字コードはEUC、改行コードはLFで統一していますが関係ありますか?
お礼
回答ありがとうございます。 つまり、ラインの終了を示す目印になっているんですね。