• ベストアンサー

PHPでHTMLソースの<img src="★">のリンク先を変えずに参照場所を変更する方法はありませんか。

多言語ページを作成しています。 メンテナンスのことと多少の事情を踏まえてPHPで1枚のhtmlファイルを切り替えて表示する方法を取っています。(言語txtファイルを読み込む方法です) この方法で文字関係は問題ないのですが、画像の表示で困っています。 文字の載ったバナーを複数使用しているので、作成する言語数だけの画像を作成しますが、当然ファイル名かフォルダでの分岐をさせる必要があります。 もっとも簡単な方法は$_SERVER['HTTP_ACCEPT_LANGUAGE']で取得している言語情報を付加したフォルダを作成し、<img src="img<?php echo "_" . $language; ?>/hoge.gif">のように動的にアドレスを変化させる方法ですが、これだと元のhtmlファイルをDreamweaverなどで開いたときに画像の表示をさせることができません。 また、htaccessでSetEnvIf Accept-Language en-US en-USしてRewriteRule /img/(.*)$ /img_en-US/$1などとすれば<img src="★">の★部分を変更しなくてもアクセスしてきた時点で画像アドレスを変更させることはできます。しかし、表示された後にリンクボタンなどで言語の変更を行おうと思うと、動的にhtaccessを書き出すなどの方法を取らないと画像だけ言語の変更ができません。 現在言語の変更は、単純に<a href="test.html?language=en-US">English</a>としてGETしていますので、ブラウザのLanguageを見てRewriteしてしまうhtaccessの方法では共存できないのです。 <img src="★">の★部分を変更せずにPHP(Javascriptなど)で動的にimgフォルダのリンク先アドレス(参照場所)を変更する方法はありませんか?

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

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

画像をlangにより選択してダウンロードさせるスクリプト(banner.php) を組んでおいて 下記のようにすれば如何でしょう。 langが正しくないときはデフォルトの画像を出力させれば Dreamweaverでも問題ないでしょう <img src="http://<サイトアドレス>/banner.php?lang=<?=$_GET['language'] ?>">

shokun83
質問者

お礼

この方法でDW上、ローカルテスト環境上、共にうまく表示できました。 実サーバ上でのテストはこれからですが、大丈夫だと思います。 ありがとうございました^^

その他の回答 (1)

回答No.2

.jpg.enや.jpg.jaという名前で保存し<img src="img.jpg">とした上で コンテントネゴシエーションを使うとか。 http://httpd.apache.org/docs/2.0/content-negotiation.html 画像に対してコンテントネゴシエーションはやったことがないですが。 DWで表示するために、img.jpgというファイル名でも保存しておく必要があると思います。

shokun83
質問者

補足

コンテントネゴシエーション大変勉強になりました。 しかし、PHPとの連携の方法が分かりませんでした。 ブラウザが送ってくるAccept-Languageを見てhtaccessなどで動的に変更するのであれば、mod_rewriteでやっていることと変わりません。 PHP(html)のヘッダー情報としてブラウザの送るAccept-Languageよりも優先して(もしくは上書きして)Accept-Languageが送信できる方法がありますでしょうか? html上のリンクなどで言語を切り替え可能なようにしていますので、自動で変更+手動で変更が必要になります。

関連するQ&A