[PHP-users 27602] Re: 正規表現についてご教授の程、よろしくお願いします。
Eiji Miwa
miwa @ offside.ne.jp
2005年 11月 24日 (木) 21:12:32 JST
ミワです。
On 2005年 11月 24日 , at 10:34, 水沼寛喜 wrote:
>
> ●想定をしている動作環境
>
> ・送信文字列
> テスト<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」という文字に正規表現によ
> る置換処理
> を行いたい。
こんなのでどうでしょう?
---
$string = 'テスト<a href="http://www.yahoo.co.jp">yahoo!</
a><br>テストyahooです。';
$keyword = 'yahoo';
$pattern = sprintf('/(%s)(?=(?:(?!<\/a>).)*(?:<a(?:>|\s[^>]+>)|$))/
is',$keyword);
$replacement = '<a href="http://hoge.hoge">$1</a>';
var_dump(preg_replace($pattern,$replacement,$string));
---
アンカーの閉じタグで判断してます。
--
miwa at offside.ne.jp
PHP-users メーリングリストの案内