sql >> データベース >  >> RDS >> Mysql

MySQLの結果文字列から変数または事前定義されたCONSTANTの値をPHPで出力します

    たぶん、DB文字列をsprint_f に保存するとします。 フォーマット、私は別の方法を見ていません:

    $color = 'blue';
    define('GRASS_COLOR', 'green');
    
    $text = 'The sky is %s and the grass is %s';
    $text = sprintf( $text, $color , GRASS_COLOR );
    
    echo $text;
    

    更新

    どうやら私はコンスタレーションに少し急いでいたようです'私は別の方法を見ていません '。実際、これは get_defined_vars()<を使用することで確実に達成できます。 / a> および get_defined_constants() 機能。アイデアは、すべてのユーザー定義の変数と定数を収集し、それを文字列に置き換えることです。これは単純なテンプレートエンジンである可能性もあります(まだ存在しない場合)。

    // place here value from database
    $text = 'The sky is $color and</br> the grass is GRASS_COLOR';
    
    $color = 'blue';
    define('GRASS_COLOR', 'green');
    
    // collect all defined variables and filter them to get only variables of string and numeric type
    $values = array_filter( get_defined_vars(), function( $item ) {
        return is_string($item) || is_numeric($item);
    });
    
    // append the dollar sign to keys
    $keys = array_map( function( $item ) { 
        return '$'.$item;
    }, array_keys( $values ) );
    
    // create the final array by comining the arrays $keys and $values
    $vars = array_combine( $keys, array_values( $values ) );
    
    // relpace names of the variables with values
    $text = str_replace( array_keys( $vars ), array_values( $vars ), $text );
    
    // collect all constants and replace user defined constants with values
    $constants = get_defined_constants( true );
    $text = str_replace( array_keys( $constants['user'] ), array_values( $constants['user'] ), $text );
    
    // we are done
    echo $text;
    


    1. MySQL str_to_dateは、有効なフォーマットにもかかわらずNULLを生成します

    2. mysqldumpエラー1045正しいパスワードなどにもかかわらずアクセスが拒否されました

    3. PDOを使用してテーブルに大量の変数を挿入します

    4. SQLiteの英数字を含む行を返す