2017-05-16 4 views
0

から変数を読み込み、変数のために私は例えば、私はデータベースに格納、変数の名前の意味:データベース値

lorem ipsum dolor $var amet 

または

lorem ipsum dolor {$var} amet 
私は、データベースからPHPで値を取得しようとすると

は、変数は実行されませんので、私は値を印刷しようとすると、それは私を示しています。

lorem ipsum dolor $var amet 

私はPHPがvarを文字列として解釈しないようにする必要がありますが、変数の内容を表示します。例えば、$var = "sit"場合、私は、データベースから値を取得する場合、それは私を示しています。それは、動的変数ですので、私は、データベースに直接変数の値を格納することはできません

lorem ipsum dolor sit amet 
。それはユーザーから選択された言語に応じて変化するlang変数です。ですから、私はデータベースから値を取得するときに、内部にvarがあるかどうかをチェックし、varがあればその値を変更する必要があります。

+0

いいえ、これは問題ではありません - ID経由で呼び出すことのできるユニークな文字列のために別々の行を格納する場合の問題はありますか? – ThisGuyHasTwoThumbs

+0

関数__curly_replacer()__を必要とし、値を配列に格納します。 '' '' lorem ipsum dolor {var_name} amet'''のような書式を使用してください。この関数は、テンプレートと配列の2つの引数をとります。関数simpleは、 '{' .array(i)。 '}'の値に対してstr_replaceを実行します。私は数分で答えとして投稿します。 –

答えて

-1

文字列使用関数sprintfで$ varの代わりに使用します。あなたはそのようなあなたのコードを書くことができます :

sprintf('lorem ipsum dolor %s amet' $var); 
0

はここcurly_replacer機能を使用する方法を示すためのサンプルスクリプトです:

<?php 

// Load array with values: 
$lang_str = array(
    'name' => 'namo', 
    'another' => 'something else', 
    'something' => 'another string' 
); 

// Create a template 
$tmpl = 'lorem ipsum {name} dolor {another} ipsum {something}'; 

echo "<p>Template: " . $tmpl . "</p>\n"; 
echo "<p>Results: " . curly_replacer($tmpl,$lang_str); 

function curly_replacer($content = '', $data = array(), $exploder = '.', $replace_null = false){ 
    preg_match_all('/{([^(}|{|)]*?)}/i', $content, $curly_matches); 
    if(isset($curly_matches[1]) && !empty($curly_matches[1])){ 
     foreach($curly_matches[1] as $match){ 
      $value = $this->get_array_value($data, explode($exploder, $match)); 
      if(!is_null($value)){ 
       if(is_array($value)){ 
        $content = str_replace("{".$match."}", var_export($value, true), $content); 
       }else{ 
        $content = str_replace("{".$match."}", $value, $content); 
       } 
      }else{ 
       if($replace_null === true){ 
        $content = str_replace("{".$match."}", '', $content); 
       } 
      } 
     } 
    } 
    return $content; 
} 
?> 

は、テンプレートに表示される場合があります名前/値のペアの配列を作成します。 。

テンプレートでは、値を置換するフォーム{var_name}を使用します。

+0

お返事ありがとうございます。実際に私はそれを試しましたが、それは私に致命的なエラーを与えます: 'オブジェクトコンテキストにないときに$ thisを使う ' – Keaire

0

@ Timurの答えを簡潔にするために: lorem ipsum dolor %s ametをデータベースに保存します。あなたがそれを取得するときに、次のようにします。

$stringFromDB = **code to get string from db**; 
$modifiedString = sprintf($stringFromDB, $var); 

$modifiedStringは今、あなたの例のようにlorem ipsum dolor sit ametする必要があります。