« 蕎麦 藤助 | メイン | 鈴むら本店 »

2007年10月20日(土曜日)

改行コードで嵌まる [ プログラミング ]

みようみまねPHP初心者ながら、昔取った杵柄ではないが、なんとか WordPress 用の自作プラグインを作成中。目的は、WordPressの通常のテキスト整形ルーチンを使わず、普段使っているTeXと同じ感じで数式を含む文章を書くこと。そのために自作の整形フィルターを作る。

  • WordPressの標準フィルターである wpautop と wptexturize をオフにする。
  • テキストを段落に分割して、<p> ... </p> とパラグラフのタグで囲む。
  • $ ・・・ $の部分をテキスト数式、\[ ・・・ ]\ の部分を別組数式に変換する。
  • 変換は、PHPのPerl互換の正規表現関数 preg_match を使えば良い。
  • バックスラッシュを含む部分が難しいが、これは既に解決している。

という感じなのだが、テキストを段落に分割する部分でトラブル。事前に実験していて、ここはクリアーしているはずなのに、何故かサーバーにアップすると失敗。

つらつら考えるに、あ、もしかして改行コードが原因かも、と。
$para_list = preg_split('/\n\n/', $text);
と、連続する改行を段落の切れ目と判断していたのだが、 \n はLFのことで、確かにUNIXでは改行だが、マックとWinでは違っているのだった。マックではCRが改行、Winでは、CR+LFが改行という、なんだかわけわからない仕様になっているのだったが、是非もない。まず、CR+LFをLFに変換、次にCRをLFに変換する。これで、どのタイプでもUNIXの改行コードになるはずである。しかるのちに、連続するLFを区切りとしてテキスト全体を配列に分割すると、想定していた通りの出力となった。やれやれ、これで安眠できるというものだ。それにしても、PHPに限らず、初心者にとって、プログラム言語というものは大変である。身近に質問できるエキスパートが居ればなあ、などと嘆息するのであった。

投稿者 sukarabe : 2007年10月20日 22:05

トラックバック

このエントリーのトラックバックURL:
http://njet.oops.jp/cgi/mt/mt-tb-alt.cgi/1660

コメント

コメントしてください

comment spam対策のため,名前とメールの入力が必須になっていますが,メールアドレスは公開されません。Web SiteのURLは任意です。Type Key IDをお持ちの方はType Keyをサイン・インしてくださってもいいです。





次回の入力を省くために、名前・URLなどを保存しますか?