2015-07-21 139 views
0

好吧,如果我使用的代码:字符串替换为变量数组

$phrase = "You should eat fruits, vegetables, and fiber every day."; 
$healthy = array("fruits", "vegetables", "fiber"); 
$yummy = array("pizza", "beer", "ice cream"); 
$newphrase = str_replace($healthy, $yummy, $phrase); 

// Provides: You should eat pizza, beer, and ice cream every day 

但是,如果我的话的名单,以取代什么是可变的。

$sample1 = "fruits, vegetables, fiber"; 
$sample2 = "pizza, beer, ice cream"; 
$phrase = "You should eat fruits, vegetables, and fiber every day."; 
$healthy = array($sample1); 
$yummy = array($sample2); 
$newphrase = str_replace($healthy, $yummy, $phrase); 

// Provides: You should eat fruits, vegetables, and fiber every day. 

相同的,如果我使用:

$sample1 = '"fruits", "vegetables", "fiber"'; 
$sample1 = '"pizza", "beer", "ice cream"'; 
$phrase = "You should eat fruits, vegetables, and fiber every day."; 
$healthy = array($sample1); 
$yummy = array($sample2); 
$newphrase = str_replace($healthy, $yummy, $phrase); 

我缺少的东西?

有没有办法轻松做到这一点?

+0

什么是您预期的输出? – KTAnj

回答

0

你需要把字符串中的阵列,使用爆炸在这种情况下:

$sample1 = "fruits, vegetables, fiber"; 
$sample2 = "pizza, beer, ice cream"; 
$phrase = "You should eat fruits, vegetables, and fiber every day."; 
    $healthy = explode(',',$sample1); 
    $yummy = explode(',',$sample2); 
$newphrase = str_replace($healthy, $yummy, $phrase); 
0

可以爆炸一个stringarray使用分隔:

$sample1 = "fruits, vegetables, fiber"; 
$sample2 = "pizza, beer, ice cream"; 
$phrase = "You should eat fruits, vegetables, and fiber every day."; 
$healthy = explode(",", $sample1); 
$yummy = explode(",", $sample2); 
$newphrase = str_replace($healthy, $yummy, $phrase); 

我会建议您在每个字符串之间没有空白区域。如果你打算这样做,那么你可能需要trim()每个值。 array_map()进来这里很有用,因为你可以一个函数映射到这样每个值:

$healthy = array_map('trim', explode(",", $sample1)); 

所以整个事情会更喜欢:

$sample1 = "fruits , vegetables,fiber"; 
$sample2 = "pizza,  beer,ice cream"; 
$phrase = "You should eat fruits, vegetables, and fiber every day."; 
$healthy = array_map('trim', explode(",", $sample1)); 
$yummy = array_map('trim', explode(",", $sample2)); 
$newphrase = str_replace($healthy, $yummy, $phrase);