【问题标题】:how to rewrite image path如何重写图像路径
【发布时间】:2011-05-27 07:44:42
【问题描述】:

大家好,我正在寻求帮助以重新编写图像路径。

让我解释一下.....

假设我正在运行 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>

我正在使用require_once('../../app-a/menu.html');将此文件导入我的APP-B

文件正常,但图像路径有问题。这些路径是相对于 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 解决方案也可以。

【问题讨论】:

  • APP-A 插件是普通的 php 脚本吗?你不能更新那个?

标签: php jquery path rewrite


【解决方案1】:

嗯...我一直很喜欢 jQuery 解决方案...

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

经过测试并且有效。

【讨论】:

  • 我建议在服务器端进行修复(出于 seo 目的)。搜索引擎不会选择修改后的图像路径。
【解决方案2】:

如果您只是想要一个快速的解决方案,您可能会更成功地将菜单 html 文件读入字符串:

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

然后您可以使用正则表达式将您的相对路径添加到每个 src 标记的开头。

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

这个正则表达式不是很健壮,但它应该给你一个起点。

【讨论】:

  • 您好,感谢您的回答。这听起来像是我能做的。还有一个帮助........在我做preg_replace之后,我如何将这些新内容放入我的APP-B代码中?我的意思是相同的语法是什么。请不要介意,我是编程新手,刚开始学习。
  • 之前你有 require_once 语句,现在你可以写 echo $menuString; 并且将菜单 HTML 打印到网页。
【解决方案3】:

可能最简单的方法就是在服务器上创建一个符号链接。

ln -s tmp1 ../../tmp1

假设它是一个 Linux / Apache 服务器。或者你也可以在你的 Apache 配置中定义别名,或者使用 .htaccess 做同样的事情。

否则,您必须开始破解 HTML 并即时重新创建它,我确信有几个库可以做到这一点,但可能有它们自己的警告和安全问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2012-07-03
    相关资源
    最近更新 更多