用PHP在CSS中搜索一些东西
我把它放在一个变量中:用PHP在CSS中搜索一些东西,php,css,regex,Php,Css,Regex,我把它放在一个变量中: .fontSize10{ font-size:xx-small; } .fontSize11{ font-size:x-small; } .fontSize12{ font-size:small; } .fontSize13{ font-size:medium; } .fontSize14{ font-size:large; } .fontSize16{ font-size:x-large; } .fontSize18{ font-size:xx-large; } 在这
.fontSize10{
font-size:xx-small;
}
.fontSize11{
font-size:x-small;
}
.fontSize12{
font-size:small;
}
.fontSize13{
font-size:medium;
}
.fontSize14{
font-size:large;
}
.fontSize16{
font-size:x-large;
}
.fontSize18{
font-size:xx-large;
}
在这个变量中,我可以有很多其他css指令
对于以.fontSize
开头的每个指令,我需要检索其名称(例如.fontSize14)和大小(大)
我需要将名称和大小保持在一起(在一个数组中,例如$tab[0][0]=“fontSize14”和$tab[0][1]=“large”)
你有什么想法吗?也许用正则表达式?谢谢:)尝试将CSS构建为一个数组,然后在其中进行搜索,搜索完成后,对数组进行内爆(使用“内爆() 阵列结构的示例:
$css = array('.fontSize10' => 'xx-small', '.fontSize11' => 'x-small');
如果您真的想继续使用$css作为字符串,那么regex就是一个不错的选择
请看以下内容:
- preg_match(),preg_match_all(),preg_replace()
- 要测试正则表达式,请执行以下操作:
$css = array('.fontSize10' => 'xx-small', '.fontSize11' => 'x-small');
如果您真的想继续使用$css作为字符串,那么regex就是一个不错的选择
请看以下内容:
- preg_match(),preg_match_all(),preg_replace()
- 要测试正则表达式,请执行以下操作:
=\.(fontSize\d+)\s*\{\s*font-size:([^;]+);\s*\}=is
但是,我建议您编写一个适当的解析器,以便处理错误或不同的格式。这意味着您逐行遍历字符串,并将当前定义块的名称存储在变量中。如果遇到
字体大小:
,可以使用当前块的名称将找到的值添加到数组中。当遇到右括号时,只需将变量设置回null。它将比正则表达式更加健壮,因为它同样适用于具有更多属性的CSS定义。如果严格遵守此格式,您可以使用如下正则表达式:
=\.(fontSize\d+)\s*\{\s*font-size:([^;]+);\s*\}=is
但是,我建议您编写一个适当的解析器,以便处理错误或不同的格式。这意味着您逐行遍历字符串,并将当前定义块的名称存储在变量中。如果遇到
字体大小:
,可以使用当前块的名称将找到的值添加到数组中。当遇到右括号时,只需将变量设置回null。它将比正则表达式更加健壮,因为它同样适用于具有更多属性的CSS定义。也许您可以使用一些包含分解的循环:
$result = array();
$parts1 = explode('}', $css);
foreach($parts1 as $part){
if(strpos($part, '.fontSize') === 0){
$subparts = explode('{', $part);
$name = $subparts[0];
//continue here to parse out the correct css value, maybe split again at ; and again at :
//you then can pick out the parts you need and store it in $value or whatever.
$result[] = array('name' => $name, 'value' => $value);
}
}
也许你做了一个包含一些爆炸的循环:
$result = array();
$parts1 = explode('}', $css);
foreach($parts1 as $part){
if(strpos($part, '.fontSize') === 0){
$subparts = explode('{', $part);
$name = $subparts[0];
//continue here to parse out the correct css value, maybe split again at ; and again at :
//you then can pick out the parts you need and store it in $value or whatever.
$result[] = array('name' => $name, 'value' => $value);
}
}
.fontSize3.otherClass
怎么样?这将是一次任务吗?这个问题对我来说还不清楚…那么.fontSize3.otherClass
呢?这将是一次任务吗?这个问题对我来说不太清楚…我试过了,效果很好。看一看。这个页面是德语的,但你应该明白其中的意思。使用“preg\u match\u all(“/=\(fontSize\d+)\s*\{\s*字体大小:([^;]+);\s*\}=is/ms“,$css,$size,preg\u PATTERN\u ORDER,0);”时,我的数组大小是空的……我试过了,效果不错。看一看。这个页面是德语的,但是你应该明白其中的意思。如果使用“preg\u match\u all(“/=\(fontSize\d+)\s*\{\s*字体大小:([^;]+);\s*\}=is/ms”,$css,$size,preg\u模式顺序,0);”,我的数组大小为空。。。