- ベストアンサー
リンク以外の部分の置換方法
お世話になっております。 例えば $A = 'たこ'; $B = qq[いかすみ<A href="" title="いかすみ">いかすみ</A>いかすみ]; という場合に、$B のリンク部分外の いか(計4つ)を たこ(計2つ)に置換したいのです。 ↓希望する結果 $B = qq[たこすみ<A href="" title="いかすみ">いかすみ</A>たこすみ]; いかすみ前後に文章や文字があります。 リンク部分は複数の可能性もあります。 行き詰まってしまいましたので、ご教示頂けますと嬉しいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No1です ソースの一部まちがえてました 誤 while ($b =~ m~((?:(?!<a[\s>]).)*)(<a[\s>].*?(?:</a>|\z))*~ig) { 正 while ($b =~ m~((?:(?!<a[\s>]).)*)((?:<a[\s>].*?(?:</a>|\z))*)~ig) { 失礼しました
その他の回答 (1)
- moon_piyo
- ベストアンサー率60% (88/146)
回答No.1
$b から (リンク部以外)<A ...>(リンク部)</A>を繰り返し抜き出し、(リンク部以外)のみ置換して組み立てなおしてみましたけど、どうでしょう $a = 'たこ'; $b = qq[いかすみ<A href="" title="いかすみ">いかすみ</a>いかすみ]; $z = ''; while ($b =~ m~((?:(?!<a[\s>]).)*)(<a[\s>].*?(?:</a>|\z))*~ig) { ($x, $y) = ($1, $2); $x =~ s/いか/$a/g; $z .= "$x$y"; } $b = $z; print $b;
お礼
遅くなりましたが、御回答有難う御座いました。 ほんっとうに助かりました!