【问题标题】:Match All CSS Files in Wordpress HTML匹配 Wordpress HTML 中的所有 CSS 文件
【发布时间】:2015-12-02 17:26:32
【问题描述】:

我正在尝试捕获从 Wordpress 网站生成的 HTML 中的所有 CSS 文件。

到目前为止,我有以下内容

preg_match_all('/"([^"]+?\.css)"/', $op, $css);

这让我得到了所有没有查询字符串的 *.css URL,但我相信你知道,WP 有一种有趣的方式来向它们附加查询字符串......所以剩下的 20 多个 CSS 文件不是捕获。

我怎样才能修改这个来抓住它们?

Dom 解析不是一个选项,因为 WP 很少生成有效的 html...

【问题讨论】:

  • 我不知道上下文,例如:$op 和 $css 中有什么。但我的第一次尝试是preg_match_all('/"([^"]+?\.css.+(?<!"))"/', $op, $css);
  • 我猜你可以做一个"([^"]+?\.css[^."]*)" 可能有/没有。
  • 这些都不行。语境?如问题中所述,Wordpress 生成了 HTML...
  • @Kevin - 真的吗?我的正则表达式不匹配?然后显示您需要匹配的示例字符串。据我记得[^"]*" 将匹配'.cssanything you find here except double quote"'
  • 我不会发布 $op ='s 的完整 HTML

标签: php css regex wordpress preg-match-all


【解决方案1】:

如果 DOM 解析不是一个选项,请考虑以下代码。你很亲密:

// just a random css link
$str = "href='/wp-content/themes/optimizePressTheme/lib/js/fancybox/jquery.fancybox.min.css?ver=2.3.4.3'";

// match href literally, then use a named group called css
$regex = "/href=['\"](?P<css>([^'\"]+?\.css)[^'\"]*)/";
preg_match_all($regex, $str, $matches);
print_r($matches["css"]);
// e.g. /wp-content/themes/optimizePressTheme/lib/js/fancybox/jquery.fancybox.min.css?ver=2.3.4.3

尽管如此,请考虑使用 DOM 解析器,它在 with badly formatted HTML 的大部分情况下也可以工作。

【讨论】:

  • 当关闭 ;) 谢谢。查看第 6 和第 7 项:kevinpirnie.com/default.php?_=6
  • 明天会更仔细地研究它。那你的链接还有效吗?
  • 慢慢来,伙计,是的,应该是
  • @Kevin:我忘记了括号中的单引号,请参阅我的更新答案。
  • 嘿@Jan 还是不行:kevinpirnie.com/default.php?_=6 缺少底部框中的那些
猜你喜欢
  • 1970-01-01
  • 2012-09-28
  • 2014-04-06
  • 1970-01-01
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多