我的代码:
$css=".class1{
padding:1330px 2220px 0 auto;
padding:10px auto 0 20px;
padding:101px auto 0 200px;
}";
$search=self::extract_unit($css,"padding:",";");
extract_unit:该函数提取[padding:]和[;]之间的内容
将返回 1330px auto 0 2220px
$replace=self::resort_padding_margin($search);
resort_padding_margin:该函数对内容进行排序
将返回 1330px 2220px 0 自动
$css = str_replace($search, $replace, $css);
echo $css;
当我应用此代码时,结果将显示如下:
.class1{
padding:1330px auto 0 2220px;
padding:10px auto 0 20px;
padding:101px auto 0 200px;
}
那么我如何使用此方法来应用所有填充以像这样显示
.class1{
padding:1330px auto 0 2220px;
padding:10px 20px 0 auto;
padding:101px 200px 0 auto;
}
最佳答案
为此,您的 self::extract_unit
方法必须返回一个数组,每次 padding
出现一个元素。
然后你的 self::resort_padding_margin 应该接受搜索数组并返回另一个经过修改的数组。或者,在主代码中编写一个循环,并将每次调用此方法的结果存储在数组中。
完成后,您可以将两个数组传递给 str_replace
。
顺便说一句,CSS 应该只有一个 padding
定义。你有三个,这有点奇怪:)
关于php - 为什么 str 替换仅在第一个匹配中起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10665691/