【问题标题】:Adding and styling external file添加和样式化外部文件
【发布时间】:2014-05-07 21:46:59
【问题描述】:

在另一个网站上存在一个不属于我的文件,其 URL 格式如下:

http://example.com/path/with/some/variables

我想将此文件包含在我自己的一个页面中。我可以使用iframe 来执行此操作,但我也想更改包含文件中某些内容的 CSS。据我所知,我无法用这种方法做到这一点。

但是,我似乎也无法通过 PHP 成功添加它,例如:

<?php include 'http://example.com/path/with/some/variables'; ?>

我不确定还有什么其他方法可以做到这一点,但这肯定是可能的。

另外,我知道在这种情况下使用 include 会带来安全隐患。

【问题讨论】:

  • 您只想将外部 url 的内容转储到您的页面内吗?
  • 那个文件是什么?一段HTML?只是一个 CSS 文件?还有什么?
  • 正确。它包含 HTML、CSS 和一些 JS。基本上,您在页面源代码中看到的内容就是我要显示的内容。
  • 然后使用file_get_content($url);获取所有内容作为字符串并将其转储到任何你想要的地方[ca3.php.net/manual/en/function.file-get-contents.php]

标签: php html css iframe


【解决方案1】:

使用readfile:

<?php readfile('http://example.com/path/with/some/variables'); ?>

【讨论】:

  • 这不会让您更改包含文件的样式。
  • 肯定会的。包含的文件将被合并到当前输出中,并且您在本地加载的任何 CSS 都将应用于它。
  • @Barmar 如果 iframe 是跨域的,则您无法从包含页面设置 iframe 内容的样式。
  • 没有 iframe。这就是他试图用这个解决方案代替的东西。
【解决方案2】:

是的,安全限制不允许您通过操作 iframe 文件的 DOM 直接在 iframe 中执行此操作。

要在 PHP 中执行此操作,您可以创建一个 PHP 脚本来读取 URL 的内容并添加您创建的外部 CSS 文件,以覆盖您想要的任何内容。所以:

myreader.php:

$contents = file_get_contents("http://example.com/path/with/some/variables");
$contents = preg_replace("/<head>/", "<head>\n<link rel='stylesheet' type='text/css' href='mystyle.css'>", $contents, 1);

echo $contents;

然后创建 mystyle.css:

body {
  color : red !important;
}

最后,要么将你的浏览器指向 myreader.php,或者如果你仍然希望它在 iframe 中,请将 iframe src 指向 myreader.php。

PS:偷东西是不对的:)

【讨论】:

  • 别担心,这不是偷窃。它是一种公开可用的资源,通常旨在通过 iframe 使用。我只是想对样式做一点修改。无论哪种方式,如果我已经在页面上有一个要显示的 CSS 文件,我可以简单地在其中添加相关样式,对吗?
  • 我只是在开玩笑 :) 我认为您不能从包括 iframe 在内的页面中设置 iframe 内容的样式。不过,您可以设置 iframe 的样式(即边框等)。
【解决方案3】:

你可以使用file_get_contents

<?php $content = file_get_contents('http://example.com/path/with/some/variables'); ?>

这里是文档file_get_contents

【讨论】:

  • 它的 file_get_contents
  • @Javad 考虑更新你的答案。
  • @GottliebNotschnabel 我做到了;我不知道为什么我输入了“-”;无论如何谢谢
猜你喜欢
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 2012-03-07
  • 1970-01-01
  • 2011-11-08
  • 1970-01-01
  • 1970-01-01
  • 2016-09-21
相关资源
最近更新 更多