【问题标题】:Extracting linked CSS files with PHP使用 PHP 提取链接的 CSS 文件
【发布时间】:2011-03-24 19:31:34
【问题描述】:

使用 PHP 解析 HTML 和提取链接的 CSS 文件的最佳方法是什么?

【问题讨论】:

  • 说什么?我不确定你想做什么
  • 也就是说,获取一个带有PHP cURL的网页,然后解析所有<link href="/any.css" rel="stylesheet" type="text/css" media="all" />的字符串

标签: php html regex curl


【解决方案1】:

DOMDocument 或许可以帮到你:

$dom = new DOMDocument();
$dom->loadHTMLFile('file.html'); // Can replace with $dom->loadHTML($str);

$link_tags = $dom->getElementsByTagName('link');

foreach($link_tags as $link_tag)
{
   // if $link_tag rel == stylesheet
   //   get href value and load CSS
}

【讨论】:

  • 我试过这个。但是,如果您尝试一些网址,例如 www.google.com,您会收到错误消息:Warning: DOMDocument::loadHTML() [domdocument.loadhtml]: Tag nobr invalid in Entity, line: 7
  • DOMDocument 对 html 非常挑剔,会抛出很多警告。这是可以接受使用“@”抑制错误的少数几个地方之一,因为无法告诉底层库关闭。
  • @Andres,这只是一个警告。碰巧 Google 的主页不是有效的 HTML。 (实际上,为了使文件大小尽可能小,这是滥用不正确的 HTML。)您仍然应该从中获取数据。尝试在生成的 DOMDocument 对象上调用 saveXML
  • @Marc,事实上you can silence the warnings
  • 我们如何做到这一点,但把它变成一个数组而不是一个对象?
【解决方案2】:

这是一个使用正则表达式的简单解决方案。

$content = '...';

$n = preg_match_all('/"([^"]+?\.css)"/', $content, $matches);
if ($n !== FALSE && $n > 0) {
    var_dump($matches[1]);
}

【讨论】:

    【解决方案3】:

    我会使用 curl 类来获取 HTML 文件,然后使用 DOMDocument 类来解析 HTML 以获得 CSS 链接。如果您要寻找更多,则必须更具体。

    【讨论】:

      【解决方案4】:

      DOMDocument http://it.php.net/domdocument

      检查 php 文档

      【讨论】:

        猜你喜欢
        • 2015-09-18
        • 2011-10-03
        • 2015-02-26
        • 1970-01-01
        • 2020-12-18
        • 2014-04-11
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多