我创建了一个论坛管理页面,管理员可以立即发送所有注册会员信息,并使用此@username@
或@useremail@
等提及他们的姓名或电子邮件。
现在我尝试的是替换@username@
如果消息的正文包含它或任何符号提到$_SESSION['username']
并输出正在查看消息的当前用户的用户名。
我试过这样做但是它起作用但是不能检查其他一次像电子邮件和全名,或者它是否在一条消息中包含2个不同的符号
首次尝试
$match_user = str_replace("@username@",$_SESSION['username'],$string);
我在网上搜索但无法获得我需要的确切内容,所以我尝试这样做但是出现了很多错误,请有人帮帮我吗?
第二次尝试
<?php
//I use this function to check if word contain in array
function contains($string, array $array) {
$count = 0;
foreach($array as $value) {
if (false !== stripos($string,$value)) {
++$count;
};
}
return $count == count($array);
}
$string = Welcome @username@ we have sent you new info message at @useremail@;
$array = array('@username@', '@useremail@');
if(contains($string, $array)) {
if($array == '@username@'){
$match_user = str_replace("@username@",$_SESSION['username'],$string);
}else if($array == '@useremail@'){
$match_user = str_replace("@useremail@",$useremail,$string);
}else if($array == '@fname@'){
$match_user = str_replace("@fname@",$userfullname,$string);
}else{
//....
}
}
?>
答案 0 :(得分:2)
在您的情况下,您可以在字符串中使用多个替换。
示例:
$string = Welcome @username@ we have sent you new info message at @useremail@;
$array = array('@username@', '@useremail@');
$wordInString = array('@username@','@useremail@','@fname@');
$replaceInString = array($_SESSION['username'] ,$useremail,$userfullname);
$match_user = str_replace($wordInString, $replaceInString, $string);
echo $match_user;