2010-12-17 18 views
1

こんにちは、画像パスを書き直す際に助けを求めています。画像パスを書き換える方法

説明してください.....

私は2つのアプリケーションを実行していると言います。 APP-AおよびAPP-Bである。私のAPP-Aにはプラグインがインストールされています。このプラグインはメニューの出力をプレーンHTML形式で生成し、HTMLファイルとして保存します。

これで、このHTMLファイルを自分のAPP = Bにインポートし、それをメニューとして使用します。 HTMLファイルはrequire_once('../../app-a/menu.html');

ファイルを使用して、このような何か.....

<div class="menu"> 
<li class="item27 parent root" > 
    <a class="daddy item image subtext" href="/xyz/cms/index.php> 
    <span> 
     <img src="tmpl/abc_template/images/icons/icon.png" alt="icon1.png" /> 
     Link 1 <em>subline</em> 
    </span> 
    </a> 
    </li> 
    <li class="item27 parent root" > 
    <a class="daddy item image subtext" href="/xyz/cms/index2.php> 
     <span> 
     <img src="tmpl/abc_template/images/icons/icon.png" alt="icon2.png" /> 
     Link 2 <em>subline</em> 
     </span> 
    </a> 
    </li> 
    <li class="item27 parent root" > 
    <a class="daddy item image subtext" href="/xyz/cms/index3.php> 
    <span> 
     <img src="templ/abc_template/images/icons/icon.png" alt="icon3.png" /> 
     Link 3 <em>subline</em> 
    </span> 
    </a> 
    </li> 
</div> 

私は私のAPP-Bにこのファイルをインポートしていますが見えますが細かいまで来ているが、私は画像のパスに問題が生じています。これらのパスはAPP-Aに関連して生成され、私はAPP-Bが正しい場所からそれらを得るようにそれらを変更したい。

<img src="tmpl/abc_template/images/icons/icon.png" alt="icon1.png" /> 
<img src="tmpl/abc_template/images/icons/icon.png" alt="icon2.png" /> 
<img src="tmpl/abc_template/images/icons/icon.png" alt="icon3.png" /> 
:私はこれらのパスように画像のパスの前に../../追加読むために私のAPP-BにしたいAPP-B、

内のファイルをインポートした後の実施例については

これらのパスのように

<img src="../../tmpl/abc_template/images/icons/icon.png" alt="icon1.png" /> 
<img src="../../tmpl/abc_template/images/icons/icon.png" alt="icon2.png" /> 
<img src="../../tmpl/abc_template/images/icons/icon.png" alt="icon3.png" /> 

親切に助けになります。私はjQueryをサポートするテンプレートを使用しています。したがって、jQueryソリューションでさえ可能です。

+0

APP-AプラグインはプレーンなPHPスクリプトですか?それを更新することはできませんか? – ajreal

答えて

1

うーん...私は常にjQueryのソリューション...

テスト済み
$(function() { 
    $('.menu img').each(function() { 
     img_path = $(this).attr('src'); 
     $(this).attr({'src': '../../' + img_path}); 
     }); 
    }); 

と作品をお楽しみください。

+0

私はサーバー側で修正することをお勧めします(SEO用)。検索エンジンは、変更された画像パスでピックアップしません。 – 65Fbef05

+0

ありがとう、これはクールだった。私はこの関数を使用しているので、受け入れられたものとしてマークしています。 –

1

おそらく最も簡単な方法は、単純にサーバー上にシンボリックリンクを作成することです。

のln -s TMP1 ../../tmp1それは、Linux/Apacheサーバだと仮定すると、

。あるいは、Apacheの設定で別名を定義したり、.htaccessを使って別名を定義したりすることもできます。

それ以外の場合は、HTMLをハッキングして、その場で再作成する必要があります。これは、いくつかのライブラリがあると確信していますが、独自の警告とセキュリティの問題がある可能性があります。

1

あなただけの迅速な解決をしたい場合、あなたはおそらく文字列にメニューのhtmlファイルを読み込むより多くの成功を持っています:

$menuString = file_get_contents('../../app-a/menu.html');

その後、あなたはあなたの相対パスを追加するために、正規表現を使用することができますすべてのsrcタグの先頭。

preg_replace('%"tmpl/%is', '"../../tmpl/', $menuString);

この正規表現は非常に堅牢ではありませんが、それはあなたの出発点を与える必要があります。

+0

お返事ありがとうございます。それは私ができることのように聞こえる。私はpreg_replaceをやった後、どうすればこれらの新しいコンテンツを自分のAPP-Bコードに入れることができますか?私は同じものの構文が何かを意味します。心配しないでください、私はプログラミングの初心者であり、ちょうど学び始めました。 –

+0

require_onceステートメントを実行する前に、 'echo $ menuString; 'と書くと、メニューHTMLをWebページに出力します。 – Andrew

+0

本当にありがとうたくさんありました –

関連する問題