匿名質問者

正規表現で文字列を変換したい

現在、html上に出力する文字列にふりがなをつける処理を作っています。

オレは<span class="ruby">東京<span class="rt">とうきょう</span></span><span class="ruby">生<span class="rt">う</span></span>まれ<span class="ruby">HIPHOP<span class="rt">ひっぷほっぷ</span></span>育ち

rubyで囲っている文字の上に、rtで囲っている文字をふりがなとして配置する、という仕組みです。
ただ、この状態だと冗長なソースになる&実際に文章の内容を書く人がhtmlその他プログラミングに詳しくない方のため、以下のような形で文章を書き、正規表現で変換できればと思っております。

オレは[東京[とうきょう]][生[う]]まれ[HIPHOP[ひっぷほっぷ]][育[そだ]]ち

以上のような形で文章を書いて、正規表現で上記のhtmlに変換できる方法があれば、ご教授いただきたいです。
よろしくお願いします。

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2014/06/25 18:48:39

ベストアンサー

匿名回答1号 No.1

その程度なら言語を選ばずほぼ同じ表現が使えます。
例として、はてなでよく取り上げられるphpで書いておきますので、あとはご自身でどうぞ。

<?php

// 元のテキスト
$string = 'オレは[東京[とうきょう]][生[う]]まれ[HIPHOP[ひっぷほっぷ]][育[そだ]]ち';
// 正規表現
$pattern = '/\[(.+?)\[(.+?)\]\]/i';
// 置換パターン
$replacement = '<span class="ruby">$1<span class="rt">$2</span></span>';
// 実行
$string = preg_replace($pattern, $replacement, $string);
// 出力
echo $string;

結果です。

オレは<span class="ruby">東京<span class="rt">とうきょう</span></span><span class="ruby">生<span class="rt">う</span></span>まれ<span class="ruby">HIPHOP<span class="rt">ひっぷほっぷ</span></span><span class="ruby">育<span class="rt">そだ</span></span>ち
匿名質問者

ありがとうございます。無事htmlタグに変換できました。

2014/06/25 18:48:30
  • 匿名回答2号
    匿名回答2号 2014/06/25 21:19:15
    .だと[]対応ミスると変になるので[^\[\]]とかの方が良いと思いますよ。
  • 匿名回答2号
    匿名回答2号 2014/06/25 21:23:16
    というか[東京*とうきょう]とかの方がわかりやすい気が。
    /\[([^\[\]]+?)\*([^\[\]]+?)\]/i
    iってなんだっけ?
  • 匿名回答3号
    匿名回答3号 2014/06/26 00:27:04
    iは大文字小文字の区別なしでしょ

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません