我正在我的网站上制作Feed功能,用户可以在其中显示操作。
我将不同的操作消息存储为
{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:”。
我的脚本中是否有任何问题,或者我必须使用某种特殊方法。
感谢。
答案 0 :(得分:2)
当PHP解析你的str_replace语句时,由于你的“{item:$ user}”是双引号,PHP将在返回字符串之前尝试计算字符串中的变量和函数。所以它正在寻找$用户认为它是一个变量。尝试用单引号替换双引号,看看它是做什么的。
我还建议让你的模板占位符更简单,因为你只是使用字符串替换和硬编码的针。在您的示例中,{user}也可以代替{var:$ user}。或者更改替换方法以利用多部分占位符
答案 1 :(得分:1)
而不是这样做:
var $s = "$variable inside a string"
只需这样做(单引号):
var $s = '$variable inside a string'
这样它就不会用字符串中的变量替换字符串中的变量。当您使用双引号时,字符串中的变量将替换为其值。
答案 2 :(得分:0)
使用单引号:
$body = str_replace('{item:$user}',$userName,$body);
答案 3 :(得分: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]