特定のファイルがソースのイメージタグを置換

このQ&Aのポイント
  • 特定ファイルのソースイメージタグを置換したい。
  • mb_eregi_replace関数を使ってイメージタグの置換は成功したが、src属性を付け加えたいがうまく動かない。
  • 問題の原因はどこか。
回答を見る
  • ベストアンサー

特定のファイルがソースのイメージタグを置換

特定ファイルがsrcに指定されているイメージタグのみを置換したいと思っています。 $ptn = "<img*[^>]*>"; $ret = mb_eregi_replace($ptn,$replace,$str); でイメージタグの置換はできたので、これにsrc属性を付け加えて下のようなソースにしてみましたが、期待していたように動いてくれません。 $ptn = "<img*src=\"images/foo\.gif\"[^>]*>"; $ret = mb_eregi_replace($ptn,$replace,$str); どの部分が悪いのでしょうか?宜しくお願いします。

  • k0101
  • お礼率56% (13/23)
  • PHP
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

imgの後ろの*は要らないと思いますよ そのままだと <imsrc 、 <imgsrc、 <imggggggggggggsrc とかにマッチすることになります $ptn = "<img src=\"images/foo\.gif\"[^>]*>";

関連するQ&A

  • 正規表現で置換

    その1 $str = "ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげ"; ↓ $str = "ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="./foo/faa/fii/xxx.jpg" width="320" height="240" />ほげほげ"; その2 $str = "<img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="http://yyy.hoge.jp/hage/hige/xxxx.jpg" width="320" height="240" />ほげほげ"; ↓ $str = "<img src="./foo/xxxx.jpg" width="320" height="240" />ほげほげほげ<a href="http://xxxx.xxxx.xxx/xxxx/">ほげほげほげ</a>ほげほげ<br /><br /><img src="./foo/faa/fii/xxx.jpg" width="320" height="240" />ほげほげ"; このような文字列があった時に、次のように従って置換したいです。 1.imgのタグの内部に、「http://yyy.hoge.jp/hage/hige/xxx.jpg」という文字列があった場合、「./foo/faa/fii/xxx.jpg」という文字列に置き換える。 2.それ以外のURLの場合は置換しない。 3.その1とその2では「xxx.jpg」となっていますが、jpg以外の拡張子の場合も存在する。 4.日本語とURLの位置や個数はバラバラです。 5.URLの中のxxxとyyyは不定の文字列で、hage、hoge、hige、foo、faa、fiiは固定です。 6.使用している言語はPHPです。正規表現を1度だけでできれば理想的ですが、今回は2回に渡った処理でも問題ありません。 以上です。正しく処理できる正規表現、あるいは下記の正規表現の誤りを教えて頂ければ幸いです。 お手数ですが、よろしくお願い致します。 下記の方法では、うまくできませんでした。 $pattern = "/http:\/\/.*?hoge.jp\//"; $replacement = "./"; $str= preg_replace($pattern, $replacement, $str); $pattern2 = '/\/?hage\/hoge/'; $str = preg_replace($pattern2, '/foo/faa/fii', $str);

    • ベストアンサー
    • PHP
  • 携帯コンテンツ イメージタグについて

    はじめまして。お詳しい方がいらっしゃいましたらお教えください。 わたくしは一通りサイトが作れる程度のスキルの者です。 現在、個人で携帯コンテンツを作ろうといろいろいじっているのですが、画像の表示のことで、とある制作系のサイトを見たときにこんな方法でi-mode、ezweb、j-skyどれでも画像が見れた、ということが書いてありました。 (すみません。どこのサイトだったか見失いました。) それはタグ属性を重複させるというものだったのですが、果たして問題はないのでしょうか? 例えばイメージタグの部分を <img src="○○○.gif" src="○○○.png" width="○○" height="○○"> このようにしておけば、i-modeやezwebはgifを拾い、j-skyはpngを拾うというものでした。 テストでやってみたらシュミレーターではちゃんと見れたのですが、実際問題はないのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • 正規表現でタグの置換をしたいと試行錯誤しております。

    正規表現でタグの置換をしたいと試行錯誤しております。 もう1歩のところだと思いますがなかなかうまくいきません。 imgタグのsrcの中身を置換したいと思っております。 <img src="/uploads/abc.gif"><img src="/uploads/test/aaa.jpg"> 上記のタグを下記のように置換 <img src="cid:abc.gif"><img src="cid:aaa.jpg"> ディレクトリの部分を「cid:」とし、その後にファイル名とする。 preg_replace('/<img[^>]*src="([^"]+).+>/', "<img src=\"cid:$1\">", $body); 上記のようなコードにまではたどり着きましたがディレクトリの削除がうまくいきません。 良い方法があれば教えてください。

    • ベストアンサー
    • PHP
  • jQueryで表示している所をsubmit無しに置換したい

    jquery1.2.26を使ってます。 イメージタグ出力場所 <div id="img1"></div> Javascript置換 $("#img1").replaceWith("[src='images/aaaa.jpg']"); このようにjQueryのAPIで <img src="aaa.jpg"> → <img src="bbb.jpg"> のようにしたいのですが、どのようにしたら置換してくれるのでしょうか? hiddenの場合は簡単なんですけど、表示されているものを置換するのがなかなか・・。 もっと簡単に記述できませんでしょうか? <input type="hidden" name="dmyflg" id="dmyflg" /> $("#dmyflg").val("1"); <span id="npg"></span> $("#npg").text("ppp"); //←他ブラウザでは??

  • マウスオーバー・アウトの制御のソース

    複数のボタンでマウスオーバー・アウトの制御のソースを教えてもらったのですが、質問いたします。 この場合、このボタンはオーバーとアウト、それぞれ同じ画像を使用しているのですが、その場合でも全部違ったファイル名をつけなければいけないのでしょうか? 現在はそあしているのですが、何か無駄な気がして・・・。 よしくお願いします。 <SCRIPT LANGUAGE = "JavaScript"> <!-- if (document.images) { //if image object is available img1on = new Image(); // MouseOver Images img1on.src = "images/c1b.gif"; img2on = new Image(); img2on.src = "images/c2b.gif"; img3on = new Image(); img3on.src = "images/c3b.gif"; img1off = new Image(); // MouseOut Images img1off.src = "images/c1a.gif"; img2off = new Image(); img2off.src = "images/c2a.gif"; img3off = new Image(); img3off.src = "images/c3a.gif"; img4off = new Image(); } function imgOn(imgName) { if (document.images) { document[imgName].src = eval(imgName + "on.src"); }}   function imgOff(imgName) { if (document.images) { document[imgName].src = eval(imgName + "off.src"); }} //--> </SCRIPT>

  • htmlソースでの置換

    以前にファイルの整理で質問したときですが以下の回答をいただきました。 「htmlソースのタブで、置換するのが早道です。 写真であれば、IMG src=" というのがありますので、それを IMG src="photo/ に置換することが出来ます。」 これはサムネールの挿入で入れた場合、サムネイルのファイル名の前だけにphotoなどのフォルダ名を入れるだけでいいのでしょうか。 サムネイルをクリックすると大きな写真が見れるという状態にしているのですがそちらの大きな写真のファイル名のほうはいじらなくても良いのでしょうか。 その方法でサーバーから言われたファイルの整理を行ったほうが楽かなと思いまして。 いくつか下の「ファイルの整理」という質問から読んでいただいて教えていただきたいと思います。 宜しくお願い致します。

  • 正規表現でタグを関数に置換

    お世話になります。 携帯向けの絵文字コンバートライブラリを使いたいのですが 現状DBに格納されている文字列が 文中に絵文字代用のgifをイメージタグで呼び出しているような内容です。 そこで <img src="./emoji/F95B.gif"> を 正規表現を使ってうまいこと $MobileClass->Convert("F95B") といった具合に置換をかけたいのですがなかなか上手く行かず詰まっております。 どなたか、この場合の正しい書き方をご教授お願いいたします。

    • ベストアンサー
    • PHP
  • ヒットする初回のみ置換する方法

    あいうえおかきくけこあいうえおあいうえお という文字列があった時、 初回の「あいうえお」のみ空に置換して かきくけこあいうえおあいうえお としたいのですが、str_replace()だと全部置換されてしまいますし、 preg_replace()やmb_ereg_replace()ではうまく置換されません。 対象とする文字列は、実際はHTMLタグやマルチバイトが混じっています。 置換するべき文字列は、全く同様のものが対象文字列内にも必ず含まれています。 preg_replace()やmb_ereg_replace()でも可能なのかもしれませんが、 どうやればいいのか分かりませんでした。 どなたかご教示下さい。

    • ベストアンサー
    • PHP
  • 文字列を抜き出して置換

    《../img.jpg》 と言う文字列を <a href="../img.jpg"><img src="../img.jpg"></a> と言う具合に置き換えて書き出したいのですが、 $text="テスト文章《img.jpg》<br>テスト文章《test.gif》"; $test01=(strpos($text, "《")+2); $test02=(strpos($text, "》")-$test01); $test03=substr($text,$test01,$test02); $test04="<a href=\"".$test03."\"><img src=\"".$test03."\"></a>"; $test_txt=str_replace($test03,$test04,$text); これだと、 「テスト文章<a href="img.jpg"><img src="img.jpg"></a><br>テスト文章《test.gif》」 となってしまい、《../img.jpg》が複数個ある場合の処理がうまく出来ず困っています。 ループ処理すればいいのでしょうけど、どのような方法が適切なのか分かりません。 また、これ以外の方法「preg_match()」などで、いい方法がありましたら、ご教授よろしくお願いします。

    • ベストアンサー
    • PHP
  • 正規表現で、文字をタグに

    正規表現初心者です。 「晴れ」 → 「<img src=hare.gif>」に 「雨」 → 「<img src=ame.gif>」といった感じで 文字を画像タグに変換するシステムを考えているのですが 「晴れのち雨」を→「<img src=hare.gif><img src=nochi.gif><img src=ame.gif>」に 「雨時々曇り」を→「<img src=ame.gif><img src=tokidoki.gif><img src=kumori>」 にする場合ですが。 function tenki($a){  $b = $a;  $b = ereg_replace("晴","<img src=hare.gif>",$b);  $b = ereg_replace("雨","<img src=ame.gif>",$b);  $b = ereg_replace("曇り","<img src=kumori.gif>",$b);  $b = ereg_replace("雪","<img src=yuki.gif>",$b);  $b = ereg_replace("時々","<img src=tokidoki.gif>",$b);  $b = ereg_replace("のち","<img src=nochi.gif>",$b);  echo $b; } tenki("天気文字列"); で良いのでしょうか?? 「晴」だけの場合でも、全ての処理を通してしまうのですが、それでいいのか疑問なので質問させていただきました。

    • 締切済み
    • PHP

専門家に質問してみよう