【发布时间】:2015-03-14 19:59:07
【问题描述】:
我正在尝试在 PHP 中创建一个函数,该函数将遍历 CSS 和 JS 文件,并在 CSS 选择器中替换类名和 ID(但不是直接的 HTML 元素或其中的 CSS 属性),而不会破坏其他内容。然而,在世界上所有的愚蠢运气中,我对正则表达式毫无希望。
我有两个数组,一个包含“原始”单词,一个包含我想要转换成的单词。
$array1 = array("ul", "text", "border");
$array2 = array("bar", "foo", "far");
$str = magic($str, $array1, $array2);
而这个神奇的功能会改变下面的 CSS 文件
#test-text ul {
text-decoration: none;
}
.ul-border span {
border: 1px solid #fff;
}
#text.niceborder {
border-color: #ccc;
}
进入
#test-foo ul {
text-decoration: none;
}
.bar-far span {
border: 1px solid #fff;
}
#foo.nicefar {
border-color: #ccc;
}
我希望同样的函数可以用于 JS 中的 jQuery 选择器做同样的事情,但是如果我得到了找到合适的选择器的基本逻辑并且只为 .和 # 个片段,我想我可以自己制作一个 $() 改编;)
谢谢你
【问题讨论】:
-
这个 CSS 必须很大,这样才能更容易地编写工具,而不仅仅是一个一个替换类。
-
你的意思是我应该手动替换类名? $array2 的内容取决于用户输入,所以我需要动态更改类名。
-
这个数组中有多少项?多次运行 preg_replace 可以吗?
-
您要解决的问题是什么?您可以为您的 css 文件使用模板吗?
-
转换繁重也没关系,因为结果文件被缓存了。因此,无论需要多少 preg_replaces,都可以