PHP来搜索css文件中的样式

PHP来搜索css文件中的样式,php,css,regex,Php,Css,Regex,可能重复: 我希望能够搜索css文件,找到类或id,并带回它的样式 即。。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”,并将其

可能重复:

我希望能够搜索css文件,找到类或id,并带回它的样式

即。。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;
或 #输入{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);
if(文件_存在(“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#u match('@^(?:#输入{?)([^}]+)@i',$contents,$matches);
echo“样式:{$matches[0]}
”; 打印(匹配2美元);

请提供帮助。

由于以下几个原因,您的特定正则表达式失败:

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

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

  • 然后您也没有转义
    {

  • 而您实际的CSS在
    #input
    {
    之间包含一个空格,您的正则表达式没有考虑这个空格

更正确的做法是:

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

有关一些有用的工具或更好的教程,请参见和。

它只是将此正文带回{margin:0;padding:0;谢谢mario我想知道发生了什么,但不确定如何让它工作。但是谢谢它起作用了。好吧,那么我接下来如何找到say height并改变height的值,如果代码是height:20px;我想把20px改成10px,也就是说它是height:10px;但是值将根据搜索而不同,更改值也将根据其他内容而不同。使用
preg\u replace\u callback
查找
{…}
块,然后使用第二个正则表达式
height:\s*\d+px
preg\u replace
查找宽度和高度。