2011-03-15 56 views
0

可能重复:
PHP str_replace with for loop from arraystr_replace - 如何处理特殊情况?

如何从一个数组元素替换字符串(#stringA#)...让我们说,我们已经在文本:

'My shoes are #stringA# but #stringA#'(相同的字符串 - #stringA#)

with $ array:

$array[0] = 'comfy'; 
$array[1] = 'smells horrible'; 

所以它会等于'My shoes are ' . $array[0] . ' but ' . $array[1]; - 我的鞋子很舒服,但气味可怕?

回答

1

通常在这种情况下,您可以使用%s作为字符串替换,然后使用vsprtinf()将%s的出现替换为数组中的值。但是,在像您这样的简单情况下,您也可以用%s替换搜索字符串并获得相同的效果。例如:

<?php 

$string = 'My shoes are #stringA# but #stringA#'; 
$key = "#stringA#"; 

$array[0] = 'comfy'; 
$array[1] = 'smells horrible'; 

$string = str_replace(array('%', $key), array('%%', '%s'), $string); 
$newstring = vsprintf($string, $array); 

echo $newstring; 

?> 

(更换%至%%是避免与在一般的情况下的printf符号的任何问题)