从数据库检索时不执行php标记数据

时间:2011-09-22 05:59:32

标签: php mysql

我想使用基本网址在内容中显示图片。所以我将以下文本存储在数据库中

<p>
    <img src="<?php echo base_url; ?>images/abc.jpg" />
</p>

当我在页面上显示php标签未执行的内容时,它只显示<img src="<?php echo base_url; ?>images/abc.jpg" />。请帮帮我。

4 个答案:

答案 0 :(得分:2)

您需要在输出之前预处理您的页面。像这样:

在数据库中:

<p > <img src="{{BASEURL}}images/abc.jpg" /></p>

在php代码中:

$output = getOutput(); // Get your output string from database
$baseURLPattern = '{{BASEURL}}';
echo preg_replace('/' . preg_quote($baseURLPattern) . '/', $yourBaseURL, $output);

<强> [更新]

简单的例子如下:

$output = '<p > <img src="{{BASEURL}}images/abc.jpg" /></p>';
$baseURLPattern = '{{BASEURL}}';
$yourBaseURL = 'http://www.example.com/';
echo preg_replace('/' . preg_quote($baseURLPattern) . '/', $yourBaseURL, $output);

答案 1 :(得分:1)

如果您使用的是codeigniter,请参阅配置文件。从那里设置base_url。 base_url()是一个函数,你的语法中缺少'()'

<img src="<?php echo base_url(); ?>/images/abc.jpg" />

答案 2 :(得分:0)

您不应该将整个代码块存储在数据库中。而是只存储文件名部分。例如,您的数据库可能有一个文件名列,其行包含:

abc.jpg
xyz.jpg

然后你的php渲染剩下的,就像这个

<?php
    // Get your $row
    ?>
        <p>
            <img src="<?php echo $base_url; ?>images/<?php echo $row['filename']; ?>" />
        </p>
    <?php
    // Continue with your code
?>

您可以将$row['filename']中的'filename'更改为您的列名称。

答案 3 :(得分:0)

将数据存储在数据库中是行不通的,因为echo不会评估php标记。

对于你想要做的事,有两种方式。

首先,存储图像URL,然后在PHP中输出它

echo '<img src="' . $base_url . $url_from_db . '"/>';

其次,在这个商店中也只是图片网址。并使用HTML BASE标记将URL设置为HTML页面上所有相对URL的BASE URL。像这样:
在你的元素中放这个

<base href="<?php echo $base_url ?>">  

并使用以下图像输出

<p><img src="<?php echo $img_orl_from_db ?>" /></p>