1

実行後にデータベース情報に置き換える必要がある「プレースホルダー」を含む変数があります。これは一般的なメールを作成するためのものです。

変数の例を次に示します。

$emailBody = "Dear [-first_name-] [-last_name-]";

次に、first_name と last_name のデータベースを呼び出し、これらのプレースホルダーを適切な値に置き換えます。

私の最終目標は、これらの重要な用語を見つけて、次のように変換することです。

$emailBody = "Dear John Smith";

したがって、[- -] を探して値を配列に分解し、修正を行ってから $emailBody を変更された変数と等しくする方法が必要だと思います。[- -] の各セットを探す方法を理解するのに苦労しています。

4

3 に答える 3

2

次のようなことができます。

$emailBody = "Dear [-first_name-] [-last_name-]";

$tokens = array("[-first_name-]", "[-last_name-]");
$replacements = array("John", "Doe");
$emailBody = str_replace($tokens, $replacements, $emailBody);
于 2013-01-24T06:52:18.307 に答える
1

str_replace 関数を使用できます

$emailBody = 'Dear [-first_name-] [-last_name-]';

$search = array('[-first_name-]', '[-last_name-]');
$replace = array('John', 'Smith');

$emailBody = str_replace($search, $replace, $emailBody);

$emailBody を「Dear John Smith」のままにします

于 2013-01-24T07:05:17.713 に答える
0

これは、通常、差し込み印刷を処理する方法です。[-正規表現を使用して、 andで囲まれたすべての文字列を検索-]し、一致する文字列を置換します。

str_replace()orのソリューションとの違いは、期待するパターンだけでなく、を満たす任意のstrtr()パターンを見つけることができることです。好きなようにその状態を処理できます。[-xxx-]

$user = new stdClass; // this may well be an array
$user->first_name = 'Jack';
$user->last_name = 'Jackson';

echo preg_replace_callback('/\[-([a-z_]*)-\]/', function($match) use ($user) {
    $field = $match[1];
    if (isset($user->$field)) {
        return $user->$field;
    }
    // the field was not present, decide what to do
    return ''; // or: return $match[0];
}, $emailBody);

以下も参照してください。preg_replace_callback()


私が以前に与えた同様の答え:

PHPメールテンプレートにショートコードを含める方法

文字列パターンをマスクで置き換える最速の方法

于 2013-01-24T06:56:03.080 に答える