0

可能重复:
使用 PHP 解析 CSS 文件

我希望能够通过 css 文件搜索找到类或 id 并恢复其样式。

IE..css文件布局

body {
margin:0;
padding:0; 
}
span {
margin:0;
padding:0; 
} #input { font:12px arial; }
a { color:#0000FF;
text-decoration:none; 
}
.logout a:hover { text-decoration:underline; }

我想在文件中找到说ID“#input”并将其带回样式。

font:12px arial;

或 #input{ 字体:12px arial;}

如果有更多的话,很可能会把它带回来,但要保持这个小样。

我尝试了自己,但没有运气,因为我在正则表达式方面不太好。

if(file_exists("css/style.css") && filesize("css/style.css") > 0){
$filesize = filesize("css/style.css");
$handle = fopen("css/style.css", "r");
$contents = fread($handle, $filesize);
fclose($handle);
}
preg_match('@^(?:#input{)?([^}]+)@i', $contents, $matches);
echo "style: {$matches[0]} <br>";
print_r($matches2);

请帮忙。

4

1 回答 1

1

您的特定正则表达式失败有几个原因:

 @^(?:#input{)?([^}]+)@i
  • 标记表示主题的^开始。由于您的#input {CSS 选择器不在正则表达式的开头,所以这总是会失败。

  • 其次,您将其标记为可选(...)?#input所以正则表达式无论如何都会忽略寻找。

  • 那么你也没有{逃脱。

  • 并且您的实际 CSS 包含一个空格#input{您的正则表达式不考虑该空格。

更正确的是:

@(?:#input\s*\{)([^}]+)@i

另请参阅开源 RegexBuddy 替代品在线正则表达式测试以获取一些有用的工具,或RegExp.info获取更好的教程。

于 2012-11-13T23:35:23.883 回答