gpt4 book ai didi

PHP CSS 从字符串到数组

转载 作者:行者123 更新时间:2023-11-28 16:42:19 25 4
gpt4 key购买 nike

这在某种程度上一定很简单,但我想不通,已经研究了一整天了。

我想将一个 CSS 文件解析为一个包含键和值的数组,如下所示:

Array('#idname' => Array('overflow' => hidden, 'color' => '#FFF'));

我通过使用正则表达式删除所有媒体查询并删除所有空格来忽略所有媒体查询。

//Remove all media queries
$cssFromLink = preg_replace("/@media.*?}}/i", '', $cssFromLink);
//Remove all whitespace
$cssFromLink = str_replace(' ','', $cssFromLink);

我想要的只是能够在列表中搜索 id 或类名,然后提取背景颜色等属性。

像 Sabberworm 和其他 CSS 解析器这样的库似乎对我不起作用,它们似乎永远/什么都不做,或者抛出一个 fatal error 。我正在 apple.com 的 css 上尝试这个。

所有其他解决方案在我看来都同样复杂,但几乎没有一个似乎专门适用于 apple.com,我不能让它在流行网站上崩溃。

最佳答案

来自 JapanPro 的答案 Parse a CSS file with PHP最适合我。它仍然有一些错误(一个 } 在一些 id 的前面),我不确定使用正则表达式是否是针对每种情况解析它的最佳方法,但现在我将使用它。

<?php

$css = <<<CSS
#selector { display:block; width:100px; }
#selector a { float:left; text-decoration:none }
CSS;

//
function BreakCSS($css)
{

$results = array();

preg_match_all('/(.+?)\s?\{\s?(.+?)\s?\}/', $css, $matches);
foreach($matches[0] AS $i=>$original)
foreach(explode(';', $matches[2][$i]) AS $attr)
if (strlen($attr) > 0) // for missing semicolon on last element, which is legal
{
// Explode on the CSS attributes defined
list($name, $value) = explode(':', $attr);
$results[$matches[1][$i]][trim($name)] = trim($value);
}
return $results;
}
var_dump(BreakCSS($css));

关于PHP CSS 从字符串到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33547792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com