[PHP-users 27450] Re: 正規表現について
okuyama@workgroup
okuyama @ workgroup.jp
2005年 11月 10日 (木) 17:26:33 JST
おく@Workgroup です
perl互換でよければ、以下のように実現可能です。
<?php
$str = '<<あいうえお>>[[[あいうえお]]][[あいうえお]][http://www.
yahoo.co.jp:あいうえお]てすと';
$repl = preg_replace(
array(
"/(.*[^\[]*)\[(http:.+?):(.+[^\[]?)\]([^\[]*.*)/",
"/(.*)\[\[\[(.+?)\]\]\](.*)/",
"/(.*)<<(.+?)>>(.*)/",
"/(.*[^\[]*)\[\[([^\[]+[^\]]?)\]\]([^\]]*.*)/",
),
array(
"\\1<a href=\"\\2\" target=\"_blank\">\\3</a>\\4",
"\\1<u>\\2</u>\\3",
"\\1<i>\\2</i>\\3",
"\\1<font size=\"4\">\\2</font>\\3"
)
, $str);
echo "$str\n\n";
echo "$repl\n";
?>
結果:
<<あいうえお>>[[[あいうえお]]][[あいうえ
お]][http://www.yahoo.co.jp:あいうえお]てすと
<i>あいうえお</i><u>あいうえお</u><font size="4">あいうえお</font><a
href="http://www.yahoo.co.jp" target="_blank">あいうえお</a>てすと
> -----Original Message-----
> From: php-users-bounces @ php.gr.jp
> [mailto:php-users-bounces @ php.gr.jp] On Behalf Of 水沼寛喜
> Sent: Thursday, November 10, 2005 4:35 PM
> To: php-users @ php.gr.jp
> Subject: [PHP-users 27445] 正規表現について
>
> お世話になっております。水沼と言います。
>
> 先日、正規表現について質問致しましたが、
> なかなか想定している様に動作しないため、
> 再度ご教授の程、よろしくお願いいたします。
>
>
> やりたいことは、掲示板のテキストエリアに
> 独自タグを入力して、投稿した場合に
> HTMLタグに変換してデータを登録したいのです。
>
> 独自タグのフォーマットは現在以下の様な形を
> 想定しています。
>
> ・ボールド(<3つと>3つに囲まれている文字のみ変換)
> <<<あいうえお>>>
> ↓
> <b>あいうえお</b>
>
> ・イタリック(<2つと>2つに囲まれている文字のみ変換)
> <<あいうえお>>
> ↓
> <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("((<){3})((^[\w])*)((>){3})",
> "<b>\\3</b>", $str);
>
> //イタリック
> $str = mb_ereg_replace("((<){2})((^[\w])*)((>){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 mailing list PHP-users @ php.gr.jp
> http://ns1.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3
>
>
PHP-users メーリングリストの案内