Mashikiです。 >タグの属性でないhogeは!hit!に置き換える。 ><a></a>にはさまれた!hit!だけはhogeに戻す。 : >$pattern1 = '/(<a href=.*>.*)(!hit!)(.*<\/a>)/' ; >$replace1 = '$1hoge$3' ; これだと <a href=xxx>XXXX</a>hoge<a href=yyy>YYYY</a> のhogeも1行目の最左と最右にはさまれているので、 戻されてしまうのでは?