-3

我正在我的网站中制作提要功能,用户可以在其中显示操作。

我将不同的动作消息存储为

 {item:$user} added {var:$count} photo(s) to the album {item:$album_name}

在数据库中,因为我在运行时收到了不同的操作消息。

所以当我使用 str_replace 作为

$body =  "{item:$user} added {var:$count} photo(s) to the album {item:$album_name}";

$body =  str_replace("{item:$user}",$userName,$body);

它不会替换文本并按原样显示,但是当我删除“$user}”时,它会替换字符串“{item:”。

我的脚本中是否有任何问题,或者我必须使用一些特殊的方法。

谢谢。

4

4 回答 4

2

当 PHP 解析您的 str_replace 语句时,由于您的 "{item:$user}" 用双引号引起来,PHP 将在返回字符串之前尝试评估字符串中的变量和函数。所以它正在寻找 $user 认为它是一个变量。尝试用单引号替换双引号,看看会发生什么。

我还建议使您的模板占位符更简单,因为您只是使用带有针硬编码的字符串替换。在您的示例中,{user} 也可以代替 {var:$user} 工作。或更改您的更换方法以利用多个零件占位符

于 2013-07-12T12:46:31.073 回答
1

而不是这样做:

var $s = "$variable inside a string"

只需这样做(单引号):

var $s = '$variable inside a string'

这样它就不会用它的值替换字符串中的变量。当您使用双引号时,字符串中的变量将被其值替换。

于 2013-07-12T12:43:59.907 回答
0

我也会给你和其他人一样的答案:

$var = 'EXAMPLE';
// double quotes take a string with variables, but interprents them 'gently'
echo " this is $var "; // will result in [ this is EXAMPLE ]

// Single quotes all a litteral string. This means it will not _parse_ the values (or functions)
echo ' this is $var '; // will result in [ this is $var ]

// If you want the dolarsign AND doublequotes, you have to escape
echo " this is \$var "; // will result in [ this is $var]
于 2013-07-12T12:48:48.627 回答
0

使用单引号:

$body =  str_replace('{item:$user}',$userName,$body);
于 2013-07-12T12:44:06.093 回答