567235 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

けむしろうの部屋別館

けむしろうの部屋別館

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Calendar

Archives

2024年04月
2024年03月
2024年02月
2024年01月
2023年12月

Category

Favorite Blog

ZIKOMANZOKU rooms kotoraya2000さん
しゅみっだ~~~ もこもこ5781さん
今日のご遺体 秘密の洗体レディーさん

Comments

コメントに書き込みはありません。

Freepage List

2006年01月31日
XML
カテゴリ:プログラミング
著作権の切れた書籍をWebで公開している青空文庫というサービスがあります。

これを無線LANとWebブラウザを内蔵しているPSPで見られたら、外出先でも電子ブックとして使えてどんなに便利だろうと思ってアクセスしてみました。

ところがPSP内蔵のWebブラウザはXHTMLで導入されたルビタグ(<ruby>~</ruby>)をサポートしていないため、「蠍(さそり)」のように漢字の横に括弧でルビが表示され、これが非常に見にくいです。

そこで青空文庫所蔵の文書からルビをすべて削除するフィルタリングサービスを作ってみました。
青空文庫ゲートウェイ (使い方)

例えば宮沢賢治の銀河鉄道の夜を読みたい場合は、上記の青空文庫ゲートウェイにアクセスして、作者ID=81、文書ID=43737を入力すればフィルタリングした文書を読むことができます。

実装はPHPで行いました。
コードの核の部分だけ以下に示します。

$fp = fopen($filename, "r");
if ($fp == FALSE) {
echo "文書が存在しません。";
exit();
}

mb_internal_encoding("Shift_JIS");

while (!feof($fp)) {
$pos1 = 0;
$s = fgets($fp);
$s = str_replace("../../default.css",
"http://www.aozora.gr.jp/cards/default.css", $s);
while (($pos1 = strpos($s, "<ruby>", $pos1))) {
$pos1 += 6; // 6 for strlen("<ruby>")
while (!($pos2 = strpos($s, "</ruby>", $pos1))) {
$pos1 += strlen($s);
$s .= fgets($fp);
}
print(preg_replace("/<ruby><rb>(.*)<\/rb>.*<\/ruby>/s",
"\\1",
substr($s, 0, $pos2 + 7)));
$pos1 = 0;
$s = substr($s, $pos2 + 7);
}
print($s);
}
fclose($fp);
$filenameには、文書のURLを代入しています。

ただこのスクリプトではすべてのルビタグが削除されず、残ってしまうものがあります。正規表現にマッチしない場合があるようですが原因は調査中です。

今後もデバッグを続けていきます。






お気に入りの記事を「いいね!」で応援しよう

Last updated  2006年02月01日 17時17分21秒
コメント(0) | コメントを書く
[プログラミング] カテゴリの最新記事



© Rakuten Group, Inc.