2016-07-18 2 views
0

不幸にも私はデータベースにHTMLコードの一部を保存しており、変数でレンダリングする際に問題があります。文字列を変数でレンダリングする方法は?

public function myFunction() 
{ 
    //... 
    // example data 
    $data = array(
     'url' => 'example.com', 
     'value' => 'Go to website!' 
    ); 

    //Here I get html code from database, let's say it looks like this: 
    $htmlPart = "<a href='{$data['url']}'>{$data['value']}</a>"; 

    $html = // rendered $htmlPart with variables 

    return $html; 
} 

私が行う場合:私の関数の内部で

echo $htmlPart; 

。それは動作しますが、レンダリングされた$ htmlPartを変数として返す必要がありますが、動作させることができません。

は私も のob_start使用してそれを実行しようとしました:私は

<a href="{$data['url']}"> 
    {$data['value']} 
</a> 

(これはレンダリングされたHTMLを取得:

ob_start(); 
echo $htmlPart 
$html = ob_get_contents(); 
ob_end_clean(); 

をしかし、それは動作しません、ここではそれは私が得るものですソースコード内)

私は間違っていますか?

+0

あなただけのVARで文字列をCONCATない理由? ..旧式の方法、あなたは知っていますか? – Jeff

+0

だから、文字通りあなたのデータベースに '{$ data ['url']}'を保存しておき、その値で置き換えたいのですか?文字列を解析し(おそらく正規表現を使用して)、値を置き換える必要があります。 –

+2

リテラル文字列の場合、私はどのように説明しますか: "私の関数内に' echo $ htmlPart'を実行すると動作します。 OPでこれを確認できますか?関数内からエコーすると、実際には 'href =" example.com "'を出力しますか? – BeetleJuice

答えて

0

用途:

public function myFunction() 
{ 
    //... 
    // example data 
    $data = array(
     'url' => 'example.com', 
     'value' => 'Go to website!' 
    ); 

    $htmlPart = "<a href='".$data['url']."'>".$data['value']."</a>"; // change to this 

    $html = // rendered $htmlPart with variables 

    return $html; 
} 
+0

彼は文字通り*自分のデータベースに保存された '{$ data ['url']}'文字列を持っていると思います。 –

0

あなたは文字列から変数を解析し、その値に置き換えるために正規表現とpreg_replace_callbackを使用して試すことができます。

このような何か:

<?php  
$data = array(
    'url' => 'example.com', 
    'value' => 'Go to website!' 
); 

//Here I get html code from database, let's say it looks like this: 
// Single quotes so it's the *literal* text 
$htmlPart = '<a href=\'{$data[\'url\']}\'>{$data[\'value\']}</a>'; 

// Double backslashes needed so the regex is correct 
$html = preg_replace_callback("/\\{\\$(.*?)\\['(.*?)']}/", function($matches) use($data){ 
    return $data[$matches[2]]; 
}, $htmlPart); 

echo $html; 

DEMO:https://eval.in/607169

関連する問題