str_replace - 如何处理特殊情况?
问题描述:
可能重复:
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];
- 我的鞋子很舒服,但气味可怕?
答
通常在这种情况下,您可以使用%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符号的任何问题)