我有一个HTML文件,在安全服务器上有外部资源,需要生成一个url才能加载。我可以正常加载HTML文件,但不会加载任何图像。相对路径不起作用。我需要将图片src
属性传递给我的generateURL
方法,并将当前的相对src
路径替换为我生成的网址。我需要替换标签的示例HTML文件是:
<img id="Im0" src="slide1page1/img/1/Im0.png" alt="Im0" width="720" height="540" style="display: none" />
<img id="Im1" src="slide1page1/img/1/Im1.png" alt="Im1" width="136" height="60" style="display: none" />
<img id="Im2" src="slide1page1/img/1/Im2.png" alt="Im2" width="669" height="45" style="display: none" />
我加载页面的PHP脚本是:
<?php
function generateURL($target,$seconds)
{
$secret = "mysecretpasscode";
$end = time() + $seconds;
$url = $target . "?e=" . $end;
$toHash = $secret . $url;
$secure = $url . "&h=" . md5($toHash);
return $secure;
}
$id = $_POST['id'];
$loc = $_POST['loc'];
$url = $loc . "slide" . $id . ".html";
$secure = generateURL($url,600);
$page = file_get_contents($secure);
?>
如果我echo $page
,我可以看到该页面好像我刚加载了一个html页面(但没有图片)。在此之前我需要做的是找到HTML中的所有src
标记并通过我的generateURL
方法运行它们,这样我就可以生成正确的URL并加载适当的哈希值。我想str_replace
会有效,但我不熟悉regex
继续。任何帮助将不胜感激。
答案 0 :(得分:0)
首先看一下这个答案:RegEx match open tags except XHTML self-contained tags
虽然我认为您可以使用PHP的preg_replace_callback
,如下所示:
src_regex = "/src=\"([^\"]+\/";
preg_replace_callback(src_regex, generateURL, html);
请注意第二个参数(generateURL
)必须是只有一个参数的函数,请查看this page。
答案 1 :(得分:0)
html解析器会更好。如果您已选择所有标签,则可以使用以下功能提取相对路径。
$u = '<img id="Im0" src="slide1page1/img/1/Im0.png" alt="Im0" width="720" height="540" style="display: none" />';
$v = explode(" ", $u);
$x = explode("=", $v[2]);
echo str_replace("\"", "", $x[1]);
输出
slide1page1/img/1/Im0.png