【问题标题】:Search something in CSS with PHP使用 PHP 在 CSS 中搜索内容
【发布时间】:2013-01-14 02:05:51
【问题描述】:

我有一个变量:

.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")

你有什么想法吗?也许用正则表达式?谢谢:)

【问题讨论】:

  • .fontSize3 .otherClass 怎么样?这将是 1 次任务吗?
  • 这个问题我不清楚...

标签: php css regex


【解决方案1】:

也许你会做一个包含一些爆炸的循环:

$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);
    }
}

【讨论】:

    【解决方案2】:

    如果它严格保持这种格式,你可以用这样的正则表达式来做:

    =\.(fontSize\d+)\s*\{\s*font-size:([^;]+);\s*\}=is
    

    但是,我建议您编写一个适当的解析器,以便处理错误或不同的格式。这意味着您逐行遍历字符串并将当前定义块的名称存储在变量中。如果您遇到font-size:,您可以使用当前块的名称将找到的值添加到数组中。当您遇到右括号时,您只需将变量设置回 null。它会比正则表达式更健壮,因为它也适用于具有更多属性的 CSS 定义。

    【讨论】:

    • 我试过了,效果很好。看看here。该页面是德语的,但您应该明白这一点。
    • With "preg_match_all("/=\.(fontSize\d+)\s*\{\s*font-size:([^;]+);\s*\}=is/ ms", $css, $size, PREG_PATTERN_ORDER, 0);",我的数组大小为空...
    【解决方案3】:

    尝试将你的 CSS 构建为一个数组,然后搜索它,当你完成搜索后,对数组进行内爆(使用 'implode()')。

    数组结构示例:

    $css = array('.fontSize10' => 'xx-small', '.fontSize11' => 'x-small');
    

    如果你真的想继续使用 $css 作为字符串,那么正则表达式就是你要走的路。

    看看以下内容:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-10
      • 2011-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      相关资源
      最近更新 更多