好的,情况很简单(我希望!)
我在本地工作(xampp),在我的.php文件中,我有以下img元素:
<img src="http://example.com/images/project-1/image1.jpg"/>
<img src="http://example.com/images/project-1/image2.jpg" />
<img src="http://example.com/images/project-1/image3.jpg" />
如何使其能够运行搜索和替换功能(如果可能,使用php),以实现以下目标:
1)在页面加载时扫描整个文档并找到所有上面没有出现的图像(断开的链接)
2) IF 从上面我们找到了损坏的图片,然后用“http://example.com替换 部分”http://127.0.0.1/projectfile“ ”
所以我想要的是扫描整个文档是否有损坏的图像,如果我找到了x,那么从这里替换src:
src =“http://www.example.com/images/project-1/image1.jpg”
用这个:
SRC = “http://127.0.0.1/project/images/project-1/image1.jpg”
我想自动为所有图像执行此操作,而不是手动执行此操作。
目前我正在努力用jQuery做这个,但我可能需要PHP,因为我需要导航到以前的文件夹,扫描目录等等
感谢您的支持! 任何想法或提示?
到目前为止,我所尝试和成功的部分正如我上面所说的那样是用jQuery搜索/替换:
$('img').attr('src',function(i,e){
return e.replace("http://example.com","http://127.0.0.1");
})
,它会忽略实时网站的src文件夹并直接粘贴到本地文件夹,但我需要让它更聪明一点:)
答案 0 :(得分:2)
使用jquery错误事件来检测丢失的图像并替换它们。以下代码应该做的伎俩
$(document).ready(function(){
$('img').on('error',function(){
// Avoid endless loop for noexistant images
if($(this).data('alreadyChecked')) return;
$(this).data('alreadyChecked',true);
//Replace src
$(this).attr('src', $(this).attr('src').replace("http://example.com","http://127.0.0.1"));
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<img src="http://example.com/images/project-1/image1.jpg"/>
<img src="http://example.com/images/project-1/image2.jpg" />
<img src="http://example.com/images/project-1/image3.jpg" />
&#13;
答案 1 :(得分:1)
使用.htaccess的解决方案是最佳方法。 PHP不会这样做,因为PHP在页面加载之前执行。当这些元素出现在您的页面上时,PHP已经为时已晚,无法触摸它们。我确定jQuery的hack可以解决这个问题,但它不会可靠,它会减慢你的负载,你可能会闪烁,因为jQuery无法触摸项目,直到页面加载之后,并且那一点你的破碎链接已经显示,直到jQuery替换它们。
在.htaccess文件中尝试此操作:
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{REQUEST_URI} \.(gif|jpg|jpeg|png)$
RewriteRule ^.*/images/(.*)/(.*)$ http://127.0.0.1/project/images/$1/$2 [L,R=301]
.htaccess将在PHP或jQuery甚至看到内容之前替换请求级别的URL。
答案 2 :(得分:0)
实现您想要的最好方法是使用javascript / jquery并在满足条件(断开链接)时替换href值。
答案 3 :(得分:0)
谢谢你们! 虽然我最初正在寻找一种PHP方法来实现这一点,但显然JQuery也可以工作!
感谢@Nadeem Manzoor和其他人! :)