我希望能够通过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);
请帮忙。
答案 0 :(得分:1)
您的特定正则表达式失败有几个原因:
@^(?:#input{)?([^}]+)@i
^
标记表示主题的开始。由于您的#input {
CSS选择器不在正则表达式的开头,因此总是会失败。
其次,您使用(...)?
将其标记为可选。因此,正则表达式无论如何都会忽略查找#input
。
然后您也没有{
转义。
您的实际CSS包含#input
和{
之间的空格,您的正则表达式不会占用。
更正确的是:
@(?:#input\s*\{)([^}]+)@i
另请参阅Open source RegexBuddy alternatives和Online regex testing以获取一些有用的工具,或RegExp.info获取更好的教程。