2016-09-26 6 views
1

Ich erstelle eine Forum-Admin-Seite, wo Admin alle registrierten Mitglieder info Nachricht auf einmal senden und ihren Namen oder E-Mail mit dieser @[email protected] oder @[email protected] und so weiter. Nun, was ich versuchte, ist @[email protected] zu ersetzen, wenn der Nachrichtentext es oder eines der Symbole enthält, um $_SESSION['username'] zu erwähnen, und den Benutzernamen des aktuellen Benutzers, der die Nachricht anzeigt, ausgibt.Php Zeichenfolge ersetzen für Symbole und Sonderzeichen

Ich habe versucht, es zu tun war und es funktionierte, aber auch für andere, wenn nicht, wie E-Mail und den vollständigen Namen oder, wenn es 2 verschiedene Symbol in einer Nachricht enthalten

ersten Versuch

$match_user = str_replace("@[email protected]",$_SESSION['username'],$string);

Hier habe ich online gesucht, konnte aber nicht genau das bekommen, was ich brauche, also habe ich versucht, es zu tun, aber es ging so viele Fehler, bitte kann mir jemand helfen?

Zweiter Versuch

<?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

Sie Arrays in str_replace verwenden können. Überprüfen Sie diese [link] (http://stackoverflow.com/questions/7605480/str-replace-for-multiple-items) –

+0

für Ihre benutzerdefinierte Funktion 'enthält' gibt es eine eingebaute Funktion namens [array_search] (http://php.net/manual/en/function.array-search.php) – Jeff

Antwort

2

in Ihrem Fall können Sie mehrere Ersatz in Zeichenfolge verwenden.

Beispiel:

$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;