2012-02-07 13 views
8

Ho fatto qualcosa di simile con str_replace utilizzo di questo:eseguendo preg_replace multipla con ricerca diversa e sostituire ogni volta

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

Come potrei fare per fare qualcosa di simile con preg_replace?

Ho creato un parser di css piccolo e molto semplice che cerca un tag specifico all'interno di un commento racchiuso tra le proprietà CSS e lo sostituisce con nuovi dati.

$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.''); 

ho più "cssTag" s 'e saranno tutti bisogno css e univoco per sostituire con (sfondo, colore, font-size, ecc) ed è per questo che sto cercando un metodo come str_replace uno sopra.

risposta

28

preg_replace può prendere una matrice proprio come str_replace

$string = 'I have a match1 and a match3, and here\'s a match2'; 
$find = array('/match1/', '/match2/'); 
$replace = array('/replace1/', '/replace2/'); 
$result = preg_replace($find, $replace, $string); 
+0

Grazie per questo. Anche se sto avendo un piccolo problema a riscrivere il mio preg_replace operativo nell'OP in questo nuovo formato. Qualche possibilità di aiuto? – tctc91

+0

Nvm - L'ho risolto :) – tctc91

Problemi correlati