как переписать путь к изображению - PullRequest
1 голос
/ 17 декабря 2010

Привет, ребята. Мне нужна помощь в переписывании пути к изображению.

Позвольте мне объяснить .....

Допустим, я запускаю 2 приложения. APP-A и APP-B. На моем APP-A установлен подключаемый модуль, который генерирует выходные данные своего меню в простом формате HTML и сохраняет их в виде файла HTML.

Теперь я хочу импортировать этот файл HTML в мой APP = B и использовать его в качестве меню для него. 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, используя require_once('../../app-a/menu.html');

Файл идет нормально, но у меня проблемы с путями к изображениям. Эти пути генерируются относительно APP-A, и я хочу изменить их, чтобы мой APP-B получил их из правильного местоположения.

Например, после того, как я импортирую файл в 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" />

стань такими путями

<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.

Ответы [ 3 ]

1 голос
/ 17 декабря 2010

Если вам просто нужно быстрое решение, вы, вероятно, добьетесь большего успеха, читая html-файл меню в строку:

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

Затем вы можете использовать регулярное выражение для добавленияваш относительный путь к началу каждого тега src.

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

Это регулярное выражение не очень устойчиво, но оно должно дать вам отправную точку.

1 голос
/ 18 декабря 2010

Хм ... Мне всегда нравятся решения jQuery ...

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

Проверено и работает.

1 голос
/ 17 декабря 2010

Вероятно, самым простым способом было бы просто создать символическую ссылку на сервере.

ln -s tmp1 ../../tmp1

Предполагая, что это сервер Linux / Apache.Или вы могли бы также сделать определение псевдонима в ваших конфигах Apache, или то же самое, используя .htaccess.

В противном случае вы должны начать взламывать HTML и воссоздавать его на лету, что, я уверен, есть несколько библиотекчтобы сделать это, но, вероятно, имеют свои собственные предостережения и проблемы безопасности.

...