• ベストアンサー

リンク以外の部分の置換方法

お世話になっております。 例えば $A = 'たこ'; $B = qq[いかすみ<A href="" title="いかすみ">いかすみ</A>いかすみ]; という場合に、$B のリンク部分外の いか(計4つ)を たこ(計2つ)に置換したいのです。 ↓希望する結果 $B = qq[たこすみ<A href="" title="いかすみ">いかすみ</A>たこすみ]; いかすみ前後に文章や文字があります。 リンク部分は複数の可能性もあります。 行き詰まってしまいましたので、ご教示頂けますと嬉しいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.2

No1です ソースの一部まちがえてました 誤 while ($b =~ m~((?:(?!<a[\s>]).)*)(<a[\s>].*?(?:</a>|\z))*~ig) { 正 while ($b =~ m~((?:(?!<a[\s>]).)*)((?:<a[\s>].*?(?:</a>|\z))*)~ig) { 失礼しました

pantonenezu
質問者

お礼

遅くなりましたが、御回答有難う御座いました。 ほんっとうに助かりました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (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;

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 文章中のファイルリンクを置換したい

    文章をjavascriptで読み込み、 以下のような文章のなかに埋まっているファイルリンクの文字を 置換してあげたいのですが、正規表現で表現しきれないでしょうか? ■例: ---以下文章---- あああああ いいいいい \\AAA\BBB\CCC ううううううう \\CCC\DDD\EEE えええええ --------------- とあった時に、下記のようにしたいと考えています。 --------------- あああああ いいいいい <a href="file:////AAA/BBB/CCC">\\AAA\BBB\CCC</a> ううううううう <a href="file:////DDD/EEE/FFF">\\DDD\EEE\FFF</a> えええええ --------------- 今考えている限りだとは\\までを含む文章まではマッチさせて、 リプレースできるのですが、 文章の中の\を/に置き換える方法が思いつきません。 ■私の頭の限界の正規表現だけだと下記までしか思いつきませんでした。 str.replace ( /(\\\\[^ \s\:\*\?\"\<\>\|\#\{\}\%\&\~]+)/gi , <a href=\"file:\/\/$&\">$&<\/a>)> どなたか思いつくことありましたらお知恵をかしていただけないでしょうか。

  • lightboxのタイトル部分にリンクを設定したい

    lightboxのタイトル部分にリンクを設定したいのですが... lightbox.jsを使用し、拡大した画像のタイトル部分にリンクを設定したく、 <a href="img/001.jpg" rel="lightbox[imagegroup]" title="&lt;a href=&quot;http://www.google.co.jp/&quot;&gt;sample&lt;/a&gt;"><img class="fade_img" src="img/001.png" /></a> と記述しましたがリンクに飛んでくれません。 (右クリック>新しいタブで表示 にするとちゃんと飛んでくれます。) どのように直したら良いでしょうか。宜しくお願い致します。

  • フレーム越しでページ内リンクを行う方法

    お世話になります。 フレームAのボタン(アイコン)押下で、 フレームBに以下のようなページ内リンク(?)をさせるには、 どのようにしたらよいでしょうか? ----------------------------- <A name="****" href=""> ~ <A href="#****"> ----------------------------- お手数ですが、ご教示お願いいたします。<(_ _)>

  • フレーム上部分を引っ張り込むリンク方法

    少し複雑なので文章で説明できるといいのですが・・・ まずTOPページがあります。 次にフレームで上下に分割したメニューページ「A」があります。 「A」の上部分はメニュー項目なので固定です。 下部分は「B」「C」と色々変わっていきます。 通常「A」→「B」にリンクする時は、ターゲットで指定してあげると ちゃんとフレームの上部分も付いてきますよね? 問題は、TOPページ→「B」にリンクしたときは、当然ながら上部分のフレームは外れてしまいます。 この場合の解決策は、すべての「B」「C」にフレームを付けるというので解決できますが、これが膨大な量なのです。 この場合、JAVAスクリプトでもなんでもかまいませんが、上部分のフレームを引っ張りこめる方法を教えて下さい。

  • 掲示板にリンクを貼る方法

    ホームページではなく、掲示板の管理人をやってるのですが、リンクを貼る場合、 <a href="HPアドレス/">リンク先の名前</a>と記述すると、リンクが貼れると言われ、その通りにして上手く行きました。 問題は文字数が300字までと決められてるので、画像とか、RINGとかいっぱいタグと言うか、ソースと言うのか良くわかりませんが、字数の多いのは出来ないのです。 でも、テキストだけのなら2つ分は入る様なので、2つのリンク先を貼ろうとして、 <a href="HPアドレスA/">リンク先の名前A</a><a href="HPアドレスB/">リンク先の名前B</a>・・・とこんな感じで2つ続けて、入れてみたら、一つ目はちゃんとリンクが貼れるのですが、2つ目は<a href="HPアドレスB/">リンク先の名前B</a>と表示されてリンクが貼れません。 どうやったら2つ貼れるのでしょうか?

  • PHPを利用したキーワード自動リンクスクリプトを作成したいです。

    Wikiの様な形で任意のキーワードに対して自動的にリンクを張るスクリプトを構築したいと考えています。 入力された文章をシンプルに検索・置換するだけであれば自分でも出来るのですが、文章内にHTMLタグが含まれている為、うまく動作しません。 例)「おむすび」というキーワードに対して自動リンクを張る場合 入力された文章: <a href="hoge.php" title="おむすびマン">おむすびマン</a>が作ったおむすび 検索・置換後の文章: <a href="hoge.php" title="<a href="omusubi">おむすび</a>マン"><a href="omusubi">おむすび</a>マン</a>が作った<a href="omusubi">おむすび</a> 上記の状況になっており、自分でも解決方法を模索したのですがいまいち思い浮かびません。正規表現の使い方次第で出来るような気がするのですが・・。 最終的には任意のHTMLタグに囲まれていないキーワードにのみ自動リンクを作成するという構造にしたいと考えています。 この問題を解決するにはどのようにスクリプトを組むとよいのでしょうか? 使用言語はPHPです、どうぞ宜しくお願い致します。

    • ベストアンサー
    • PHP
  • Dreamweaverでの置換方法について

    DreamweaverCS6を使ってホームページ(商品の販売サイト)の更新をしている者です。 複数ページにわたって、一括で置換したい箇所があります。 それらのページを開き、 検索および置換>検索対象「現在ひらいているドキュメント」>全て置換 の作業をすると、トップページ(index.html)の情報まで置き換えられてしまいます。 その際、トップページ(index.html)は、開いておりません。 原因を探ってみたのですが、 <link rel="index" href="../index.html"> をhead要素で指定している事に原因があるような気がするのですが、 <link rel>で指定された文書は、開いていなくても置換されてしまうのでしょうか? どなたか原因が分かる方、お教え頂ければ幸いです。

  • Dreamweaver4.0の「特定のタグ」の置換方法について教えてさい。(>_<)

    Dreamweaver4.0の置換機能を使って、下記のような置換をしたいと考えているのですが、なかなかうまくかず、困っています。 (T_T) <a href="任意のURL">任意のテキスト</a> ↓ <a href="任意のURL"><font color="#FFFFFF">任意のテキスト</font></a> aタグの後ろ(任意のテキストの前後)に、一意のフォントタグを挿入したいと考え、いろいろと試しているのですが、なかなかうまくいきません。 Dreamweaver置換の「特定のタグ」の置換機能を使用すれば、いけそうな感じがするところまでは辿りついたのですが。。。 ご存知のかたが、いらっしゃいましたら、お助けください。 よろしくお願いします。 m(_ _)m

  • Lotsu Notes7 同一文章内リンクの設定方法

    Lotus Notes7を使用しています。 メール文章が長くなるため、同一文章内リンクを作りたいのですが 方法がわかりません。 HTMLの<a href=***></a>のイメージで、文字から文字、または文字からセルへ同一文章内リンクを貼ることはできますか? ご教示くださいますよう、よろしくお願いいたします。

  • preg_replaceでタグだけ置換

    HTMLのタグを別のタグに置換しようとしています。 HTML中に複数ある<a></a>タグ <a href="/w/index.php?title=%E3%83%95%E3%82%B0%E3%83%AA%E3%83%BC%E5%B7%9D&amp;action=edit" class="new" title="フグリー川">フグリー川</a>など という文字列の<a></a>タグを<span style="color:#ff0000;"></span>に置換したいのです。 $pattern = '|<a href="/w/index\.php\?title=.*?">(.*)</a>|'; $replace = '<span style="color:#ff0000 ;">\\1</span>'; preg_replace( $pattern, $replace, $html, -1, $count); print $count; $countの表示は 1 でした。上記のような<a>タグは複数あるのに。 上記のような<a>タグをマッチさせるにはどうパターン表記したらいいでしょうか? PHP5.2.4です。 ご教授お願いします。

    • ベストアンサー
    • PHP