[PHP-users 27445] 正規表現について

水沼寛喜 mizunuma @ m-design.com
2005年 11月 10日 (木) 16:34:38 JST


お世話になっております。水沼と言います。

先日、正規表現について質問致しましたが、
なかなか想定している様に動作しないため、
再度ご教授の程、よろしくお願いいたします。


やりたいことは、掲示板のテキストエリアに
独自タグを入力して、投稿した場合に
HTMLタグに変換してデータを登録したいのです。

独自タグのフォーマットは現在以下の様な形を
想定しています。

・ボールド(<3つと>3つに囲まれている文字のみ変換)
<<<あいうえお>>>
↓
<b>あいうえお</b>

・イタリック(&lt;2つと&gt;2つに囲まれている文字のみ変換)
&lt;&lt;あいうえお&gt;&gt;
↓
<i>あいうえお</i>

・アンダーライン([3つと]3つに囲まれている文字のみ変換)
[[[あいうえお]]]
↓
<u>あいうえお</u>

・文字サイズ変更([2つと]2つに囲まれている文字のみ変換)
[[あいうえお]]
↓
<font size="4">あいうえお</font>

・URLアドレス
[http://www.yahoo.co.jp:あいうえお]
↓
<a href="http://www.yahoo.co.jp" target="_blank">あいうえお</a>

です。

HTMLの文字コードは、utf-8を使用しております。
現在、自分で作成した正規表現の方法は以下の通りです。

<?

function($str){

  //ボールド
  $str = mb_ereg_replace("((&lt;){3})((^[\w])*)((&gt;){3})", "<b>\\3</b>",
$str);

  //イタリック
  $str = mb_ereg_replace("((&lt;){2})((^[\w])*)((&gt;){2})", "<b>\\3</b>",
$str);

  //アンダーライン
  $str = mb_ereg_replace("((\[){3})((^[\w])*)((\]){3})", "<u>\\3</u>",
$str);

  //文字サイズ
  $str = mb_ereg_replace("((\[){2})((^[\w])*)((\]){2})", "<font
size='4'>\\3</font>", $str);

  //URLアドレス
?>

よろしくお願い致します。




PHP-users メーリングリストの案内