[PHP-users 27597] Re: 正規表現についてご教授の程、よろしくお願いします。
kei sumigama
ksumigama @ space-i.com
2005年 11月 24日 (木) 12:26:57 JST
炭竃です。
こういうケースの場合は後方参照が有効だと思います。
後方参照とは () で括った箇所にマッチした文字列を
マッチした後に \数字 で参照(使用)できる機能です。
これを使えるようになれば正規表現の幅が広がりますよ!!
<?
$str='テスト1<a href="http://www.yahoo.co.jp">yahoo</a>
yahooです。
テスト2<a href="http://www.google.com">google</a>
今はgoogleだよ。';
$str=mb_ereg_replace('(<a +[^<>]+?>(.+?)</a>)(.*?)\2','\1\3\1',$str);
echo $str;
?>
$keyword を使うのであれば mb_ereg_replace の所を以下の様に・・・
$str=mb_ereg_replace('(<a +[^<>]+?>'.$keyword.'</a>)(.*?)'.$keyword,'\1\2\1',$str);
----- Original Message -----
From: "水沼寛喜" <mizunuma @ m-design.com>
To: <php-users @ php.gr.jp>
Sent: Thursday, November 24, 2005 10:34 AM
Subject: [PHP-users 27590]正規表現についてご教授の程、よろしくお願いします。
> お世話になっております。水沼です。
>
> 以前に投稿致しました、正規表現についてのご質問の続きになるのですが、
> 以下の様な正規表現による置換処理を行いたい場合は、どの様なパターンマッチ
> を記述すれば良いのか悩んでおります。
>
> おわかりの方がおられましたらご教授の程、よろしくお願いします。
>
> ●内容
> 掲示板の様なテキストエリアへの入力処理時に
> 特定の文字の置換処理を行いたい。
>
>
> ●想定をしている動作環境
>
> ・送信文字列
> テスト<a href="http://www.yahoo.co.jp">yahoo</a>
> yahooです。
>
>
> ・置換処理後の想定している結果
> テスト<a href="http://www.yahoo.co.jp">yahoo</a>
> <a href="http://hoge.hoge">yahoo</a>です。
>
>
> 1行目の「yahoo」というURLとURLリンクに記述されている文字には
> 反応しないで、2行目の「yahoo」という文字に正規表現による置換処理
> を行いたい。
>
> ※「yahoo」という文字列部分は、実環境時には変数で渡して他の言葉になります。
>
> ご教授の程、よろしくお願い致します。
>
PHP-users メーリングリストの案内