我想获取页面上的任何 url,主要是为了修复未显示的图像,并将其从相对更改为绝对,如果它是相对的。
例子:
从<img src="/folder/folder/image.jpg" />
至<img src="http://<?php echo get_option('domain'); ?>/folder/folder/image.jpg" />
由于我将插入的域部分是一个 PHP 片段,因此更需要哪种方法最适合。谢谢。
我想获取页面上的任何 url,主要是为了修复未显示的图像,并将其从相对更改为绝对,如果它是相对的。
例子:
从<img src="/folder/folder/image.jpg" />
至<img src="http://<?php echo get_option('domain'); ?>/folder/folder/image.jpg" />
由于我将插入的域部分是一个 PHP 片段,因此更需要哪种方法最适合。谢谢。
您可以获取所有 img 元素并将 src 更改为 document.url + img.src。在 JavaScript 中应该很简单。我认为这里更大的问题是您为什么在使用相对 URL 时遇到问题?如果您想从不同的域或类似的东西动态加载图像,那么可以。
如果您需要在页面加载时执行此操作,那么您最好在用于呈现 html 的任何内容中构建 url 服务器端。
有关如何在 JS 中执行此操作的更多信息和代码示例。从相对 URL 获取绝对 URL。(IE6问题)
使用 jquery:
$(function () {
$('img').each(function () {
if (this.src.indexOf('http://') === -1) this.src = "http://mysite.com" + this.src;
});
});
使用 JQuery,您可以使用 .attr() 更改 src 字符串。如果没有 ID 属性,尝试捕获正确的 img 标签可能会变得很困难。您必须检查每个 src 字符串中的“www”。在附加当前站点之前查看是否已经存在站点引用。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/lib/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("img").each(function(){
if($(this).prop("src").toLowerCase().indexof("www.") != -1){
$(this).attr('src', document.domain + $(this).prop("src"));
}
)};
</script>
我认为最难的部分是确定哪些 img 标签需要更改。
为此使用正则表达式:
$text = '<img src="abc" /> asiodn <img src="dev" />'; //e.g.
$regex = '/<img src="([^https?:\/\/][^"]*)" \/>/';
$result = preg_replace($regex, '<img src="http://' . get_option('domain') . '$1" />', $text);
这应该修复图像 src 中的所有相对 url