Javascript 匹配字符串并删除关联的CSS
所以我有一个CSS选择器的Javascript数组: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[]
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,你想删除一些规则。让我假设:
选择器{property:value;}
#页脚
{
显示:块;
}
进入:
#页脚{显示:块;}
现在,一旦将其保存在文本文件中,就可以使用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>