2016-09-26 226 views
1

我創建了一個論壇管理頁面,管理員可以一次發送所有註冊成員的信息消息,並提及他們的名字或電子郵件使用此@[email protected]@[email protected]等。 現在我試圖取代@[email protected]如果消息正文包含它或任何使用提及$_SESSION['username']的符號,並輸出正在查看該消息的當前用戶的用戶名。Php字符串替換爲符號和特殊字符

我試圖做它,這是和它的工作,但不能檢查其他曾經這樣電子郵件和全名,或者如果它包含一個消息

第一次嘗試2種不同的符號

$match_user = str_replace("@[email protected]",$_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 @[email protected] we have sent you new info message at @[email protected]; 
$array = array('@[email protected]', '@[email protected]'); 

if(contains($string, $array)) { 
    if($array == '@[email protected]'){ 
    $match_user = str_replace("@[email protected]",$_SESSION['username'],$string); 
    }else if($array == '@[email protected]'){ 
    $match_user = str_replace("@[email protected]",$useremail,$string);  
    }else if($array == '@[email protected]'){ 
    $match_user = str_replace("@[email protected]",$userfullname,$string); 
    }else{ 
     //.... 
    } 
} 
?> 
+0

可以在str_replace函數使用數組。檢查這個[鏈接](http://stackoverflow.com/questions/7605480/str-replace-for-multiple-items) –

+0

爲您的自定義函數'contains'有一個內置函數稱爲[array_search](http:///php.net/manual/en/function.array-search.php) – Jeff

回答

2

你的情況,你可以在字符串中使用多個替換。

實施例:

$string = Welcome @[email protected] we have sent you new info message at @[email protected]; 
$array = array('@[email protected]', '@[email protected]'); 

$wordInString = array('@[email protected]','@[email protected]','@[email protected]'); 
$replaceInString = array($_SESSION['username'] ,$useremail,$userfullname); 

$match_user = str_replace($wordInString, $replaceInString, $string); 

echo $match_user;