PHP's file_get_contents:处理结果中的相对路径


PHP's file_get_contents: dealing with relative paths inside the result

我试图解决一个跨域问题,所以我正在实现一个脚本,将从get参数获取URL并打开file_get_contents。它可以正常工作,直到页面尝试获得相对路径(以下行在index.html中):

<script src="js/custom_script.js" />

如果我用preg_replace创建一个regex替换所有的HTML数据切换js/custom.js到http://content.domain/js/custom_script.js它也可以工作,但问题是我并不总是知道有多少级别是在我试图打开的页面内,如:index.html可以有一个按钮到另一个页面与另一个相对路径。

这个问题有一个优雅的解决方案吗?

我将使用基本的HTML标签,而不是刮遍整个源代码,只是将其插入</head>标签之前。

可以非常简单,只需一行代码:echo str_replace("</head>", "<base href='"http://content.domain/'" target='"_blank'"></head>", $source)

使用base标签可以让浏览器为你处理所有嵌套的链接:

为页面上的所有链接指定默认URL和默认目标: