不幸的是,我将部分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 :
来做到这一点ob_start();
echo $htmlPart
$html = ob_get_contents();
ob_end_clean();
但它不起作用,这就是我得到的:
<a href="{$data['url']}">
{$data['value']}
</a>
(这是我在源代码中得到的html)
知道我做错了什么吗?
答案 0 :(得分: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;
}
答案 1 :(得分: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;