2012-05-19 100 views
2

我的代码:为什么str替换工作只在第一次匹配?

$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:此函数提取之间的内容[填充:]和[;]

将返回1330px自动0 2220px

$replace=self::resort_padding_margin($search); 

resort_padding_margin:此函数胜地content

will return 1330px 2220px 0 auto

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

回答

2

对于这个工作,您的self::extract_unit方法必须返回一个数组,每发生一个项目padding

然后你的self::resort_padding_margin应该接受搜索数组并返回另一个数组。或者,在主代码中编写一个循环,并将每次调用的结果存储到数组中。

完成后,您可以将两个阵列都传递给str_replace

顺便说一句,CSS应该只有一个padding的定义。你有三个,这有点奇怪:)

相关问题