[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 メーリングリストの案内