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

okuyama@workgroup okuyama @ workgroup.jp
2005年 11月 10日 (木) 17:33:06 JST


おく@Workgroup です

> > ・ボールド(<3つと>3つに囲まれている文字のみ変換)
> > <<<あいうえお>>>
> > ↓
> > <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 メーリングリストの案内