Javascript 匹配字符串并删除关联的CSS

Javascript 匹配字符串并删除关联的CSS,javascript,jquery,logic,Javascript,Jquery,Logic,所以我有一个CSS选择器的Javascript数组: array is like the following: '.header', '#footer', '#nav', etc <pre><?php $debug = false; $rules[] = ".header { border: 1px solid; color: black; }"; $rules[] = "#nav { border: 1px solid; color: black; }"; $rules[]

所以我有一个CSS选择器的Javascript数组:

array is like the following: '.header', '#footer', '#nav', etc
<pre><?php
$debug = false;
$rules[] = ".header { border: 1px solid; color: black; }";
$rules[] = "#nav { border: 1px solid; color: black; }";
$rules[] = "#footer { display: block; }";
$rules[] = "#header { border: 1px solid; color: black; }";
$rules[] = ".nav { border: 1px solid; color: black; }";
$rules[] = ".footer { display: block; }";
$remove = array('.header', '#footer', '#nav');
$final = array();
foreach ($rules as $rule)
{
    if ($debug) echo "Debug: ", var_dump(strpos($rule, " ")) . "\n";
    if ($debug) echo "Debug: ", var_dump(substr($rule, 0, strpos($rule, " "))) . "\n";
    if ($debug) echo "Debug: ", var_dump(in_array(substr($rule, 0, strpos($rule, " ")), $remove)) . "\n";
    if ($debug) echo "---\n";
    if ( !in_array(substr($rule, 0, strpos($rule, " ")), $remove) )
        $final[] = $rule;
}
echo implode("\n", $final);
?></pre>
我还有一个div,其中包含我的网站CSS作为文本(12000行长):

有人能提供建议吗?这是为了删除未使用的网站CSS。我被困了一段时间。谢谢

更新:添加了调试模式输入输出

好吧,我猜你有一堆CSS,你想删除一些规则。让我假设:

  • 每行只有一个选择器
  • 每行都以该选择器开始
  • 每行有一条完整的规则。i、 例如,
    选择器{property:value;}
  • 如果第三个选项不成功,则有很多,您可以使用它们来制作此CSS:

    #页脚
    {
    显示:块;
    }
    
    进入:

    #页脚{显示:块;}
    
    现在,一旦将其保存在文本文件中,就可以使用PHP或一些好的编程语言进行操作。我不推荐客户机端。假设您有PHP,并且这里有一组规则:

    #导航{边框:1px实心;颜色:黑色;}
    #页脚{显示:块;}
    
    您有您的阵列:

    $remove = array('.header', '#footer', '#nav');
    
    您可以使用以下内容:

    输出为:

    #标题{边框:1px实心;颜色:黑色;}
    .nav{边框:1px实心;颜色:黑色;}
    .footer{display:block;}
    

    Fiddle:您发布的HTML无效。除非您将CSS作为内容输出?
    (“.header”、“footer”、“nav”)
    这不是一个数组。您要从div中删除文本吗?jQuery选择器不会神奇地匹配文本!您是否在html div元素中编写CSS代码?你想用它做什么?CSS代码作为文本存储在DIV中。数组包含我想从CSS中删除的选择器的名称(即DIV中的文本)。这是为了删除未使用的网站CSS。
    $remove = array('.header', '#footer', '#nav');
    
    <pre><?php
    $debug = false;
    $rules[] = ".header { border: 1px solid; color: black; }";
    $rules[] = "#nav { border: 1px solid; color: black; }";
    $rules[] = "#footer { display: block; }";
    $rules[] = "#header { border: 1px solid; color: black; }";
    $rules[] = ".nav { border: 1px solid; color: black; }";
    $rules[] = ".footer { display: block; }";
    $remove = array('.header', '#footer', '#nav');
    $final = array();
    foreach ($rules as $rule)
    {
        if ($debug) echo "Debug: ", var_dump(strpos($rule, " ")) . "\n";
        if ($debug) echo "Debug: ", var_dump(substr($rule, 0, strpos($rule, " "))) . "\n";
        if ($debug) echo "Debug: ", var_dump(in_array(substr($rule, 0, strpos($rule, " ")), $remove)) . "\n";
        if ($debug) echo "---\n";
        if ( !in_array(substr($rule, 0, strpos($rule, " ")), $remove) )
            $final[] = $rule;
    }
    echo implode("\n", $final);
    ?></pre>