[PHP-users 27454] Re: 正規表現について

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


お世話になっております。水沼です。

自己レスです。

URLの正規表現については以下の様なコードを書きました。
ただし、(([\w])*)の部分が、英数字と記号が対応できていないので、
現在試行錯誤をしている状況です。

<?
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');

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

## イタリック文字 ##
$str = mb_ereg_replace("((&lt;){2})(([\w])*)((&gt;){2})", "<i>\\3</i>",
$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);

## リンク ##
$str =
mb_ereg_replace("(\[)(https?)"."(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)"."(
:)"."(([\w])*)"."(\])", "<a href=\"\\2\\3\" target=\"_blank\">\\5</a>",
$str);
?>

ご教授の程、よろしくお願い致します。

> -----Original Message-----
> From: php-users-bounces @ php.gr.jp
> [mailto:php-users-bounces @ php.gr.jp] On Behalf Of 水沼寛喜
> Sent: Thursday, November 10, 2005 5:51 PM
> To: 'PHP-users ML'
> Subject: [PHP-users 27452] Re:正規表現について
>
>
> お世話になっております。水沼です。
>
> おく様、まつやま様さっそくのご教授ありがとうございます。
>
> まつやま様ののソースコードで開発していこうと現在考えておりますが、
> 以下の様なテスト文字を作成して試したところ、英数字と記号を使用した場合、
> うまく変換されないのですがどの様にしたらよろしいでしょうか?
>
> ご教授の程よろしくお願い致します。
>
> ●テスト文字
> <<あいうえお>>
> <<かきくけこ>>
> [[[挨拶]]]
> [[[竜]]]
> [[[龍]]]
> [[かきくけこ]]
> [[たちつてと]]
> [[""\\""]]
>
>
> ------------------------------------
> 株式会社エム・ディ−・シ−   水沼 寛喜
> mizunuma @ m-design.com
> 〒212-0012   川崎市幸区中幸町3-2
> TEL:044-555-3185 FAX:044-555-5700
> ------------------------------------
>
>
> > -----Original Message-----
> > From: php-users-bounces @ php.gr.jp
> [mailto:php-users-bounces @ php.gr.jp]
> > On Behalf Of okuyama @ workgroup
> > Sent: Thursday, November 10, 2005 5:33 PM
> > To: 'PHP-users ML'
> > Subject: [PHP-users 27451] Re:正規表現について
> >
> >
> > おく@Workgroup です
> >
> > > > ・ボールド(&lt;3つと&gt;3つに囲まれている文字のみ変換)
> > > > &lt;&lt;&lt;あいうえお&gt;&gt;&gt;
> > > > ↓
> > > > <b>あいうえお</b>
> > を忘れてました。
> >
> > <?php
> >
> > $str = '&lt;&lt;&lt;あいうえお&gt;&gt;&gt;&lt;&lt;あいうえお
&gt;&gt;[[[あ
>> > うえお]]][[あいうえお]][http://www.yahoo.co.jp:あいうえお]てすと';
> >
> >
> > $repl = preg_replace(
> > 	array(
> > 		"/(.*[^\[]*)\[(http:.+?):(.+[^\[]?)\]([^\[]*.*)/",
> > 		"/(.*)\[\[\[(.+?)\]\]\](.*)/",
> > 		"/(.*[^;]*)&lt;&lt;(.+?)&gt;&gt;([^&]*.*)/",
> > 		"/(.*)&lt;&lt;&lt;(.+?)&gt;&gt;&gt;(.*)/",
> > 		"/(.*[^\[]*)\[\[([^\[]+[^\]]?)\]\]([^\]]*.*)/",
> >
> > 	),
> > 	array(
> > 		"\\1<a href=\"\\2\" target=\"_blank\">\\3</a>\\4",
> > 		"\\1<u>\\2</u>\\3",
> > 		"\\1<i>\\2</i>\\3",
> > 		"\\1<b>\\2</b>\\3",
> > 		"\\1<font size=\"4\">\\2</font>\\3"
> > 	)
> > , $str);
> >
> > echo "$str\n\n";
> > echo "$repl\n";
> >
> > ?>
> > でOKですね。
> >
> >
> >
> > > -----Original Message-----
> > > From: php-users-bounces @ php.gr.jp
> > [mailto:php-users-bounces @ php.gr.jp]
> > > On Behalf Of okuyama @ workgroup
> > > Sent: Thursday, November 10, 2005 5:27 PM
> > > To: 'PHP-users ML'
> > > Subject: [PHP-users 27450] Re:正規表現について
> > >
> > > おく@Workgroup です
> > >
> > > perl互換でよければ、以下のように実現可能です。
> > >
> > > <?php
> > >
> > > $str = '&lt;&lt;あいうえお&gt;&gt;[[[あいうえお]]][[あいうえ
> > お]][http://www.
> > > yahoo.co.jp:あいうえお]てすと';
> > >
> > >
> > > $repl = preg_replace(
> > > 	array(
> > > 		"/(.*[^\[]*)\[(http:.+?):(.+[^\[]?)\]([^\[]*.*)/",
> > > 		"/(.*)\[\[\[(.+?)\]\]\](.*)/",
> > > 		"/(.*)&lt;&lt;(.+?)&gt;&gt;(.*)/",
> > > 		"/(.*[^\[]*)\[\[([^\[]+[^\]]?)\]\]([^\]]*.*)/",
> > >
> > > 	),
> > > 	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";
> > >
> > > ?>
> > >
> > > 結果:
> > > &lt;&lt;あいうえお&gt;&gt;[[[あいうえお]]][[あいうえ
> > > お]][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タグに変換してデータを登録したいのです。
> > > >
> > > > 独自タグのフォーマットは現在以下の様な形を
> > > > 想定しています。
> > > >
> > > > ・ボールド(&lt;3つと&gt;3つに囲まれている文字のみ変換)
> > > > &lt;&lt;&lt;あいうえお&gt;&gt;&gt;
> > > > ↓
> > > > <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 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 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 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 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 メーリングリストの案内