我用str_replace做了类似的事情:
$string = $url;
$patterns = array();
$patterns[0] = 'searchforme';
$patterns[1] = 'searchforme1';
$patterns[2] = 'searchforme2';
$replacements = array();
$replacements[0] = 'replacewithme';
$replacements[1] = 'replacewithme1';
$replacements[2] = 'replacewithme2';
$searchReplace = str_replace($patterns, $replacements, $string);
我如何使用preg_replace做类似的事情?
我已经构建了一个非常简单的小css解析器,用于搜索围绕CSS属性的注释中的特定标记,并用新数据替换它。
$stylesheet = file_get_contents('temp/'.$user.'/css/mobile.css');
$cssTag = 'bodybg';
$stylesheet = preg_replace("/(\/\*".$cssTag."\*\/).*?(\/\*\/".$cssTag."\*\/)/i", "\\1 background: $bg url(../images/bg.png) repeat-x; \\2", $stylesheet);
file_put_contents('temp/'.$user.'/css/mobile.css',''.$stylesheet.'');
我有多个“cssTag”,他们都需要用(背景,颜色,字体大小等)代替的独特css,这就是为什么我要寻找像上面的str_replace一样的方法
答案 0 :(得分:36)
preg_replace
可以像str_replace
$string = 'I have a match1 and a match3, and here\'s a match2';
$find = array('/match1/', '/match2/');
$replace = array('foo', 'bar');
$result = preg_replace($find, $replace, $string);
答案 1 :(得分:0)
您也可以使用T-Regx library
<?php
$stylesheet = file_get_contents('temp/'.$user.'/css/mobile.css');
$cssTag = 'bodybg';
$stylesheet = pattern("(/\*" . $cssTag . "\*/).*?(/\*/" . $cssTag . "\*/)", 'i')
->replace($stylesheet)
->all()
->by()
->map([
'searchforme' => 'replacewithme',
'searchforme1' => 'replacewithme2',
'searchforme1' => 'replacewithme2',
]);
您不需要定界符/
,因为T-Regx会自动添加定界符