2016-09-26 50 views
1

フォーラム管理ページを作成します。管理者はすべての登録済みメンバーの情報メッセージを一度に送信し、@[email protected]または@[email protected]などを使用して自分の名前や電子メールを言います。 今私が試したのは、$_SESSION['username']に言及し、メッセージを表示している現在のユーザーのユーザー名を入力して、メッセージ本文にメッセージまたは本文のいずれかが含まれている場合は、@[email protected]を置き換えます。シンボルと特殊文字の代わりに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で配列を使用することができます。あなたのカスタム関数 'contains'には、[array_search](http:/ /)という組み込み関数がありますので、これを[link](http://stackoverflow.com/questions/7605480/str-replace-for-multiple-items) –

+0

にチェックしてください。 /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;