PHP在css文件中搜索样式

时间:2012-11-13 23:15:48

标签: php css regex

  

可能重复:
  Parse a CSS file with PHP

我希望能够通过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 {font: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);

请帮忙。

1 个答案:

答案 0 :(得分:1)

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

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

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

  • 然后您也没有{转义。

  • 您的实际CSS包含#input{之间的空格,您的正则表达式不会占用。

更正确的是:

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

另请参阅Open source RegexBuddy alternativesOnline regex testing以获取一些有用的工具,或RegExp.info获取更好的教程。