如何在存储在DB中的HTML内容中嵌入图像的动态URL?

时间:2014-05-05 09:30:32

标签: php html database image dynamic

我在HTML中存储了很多DB内容 我在许多动态页面打印了 例如

// returned from DB
$contentHTML = 
'
    <h1>Photo Number 1</h1>
    <p>description1</p>
    <p><img src="../images/1.jpg"/></p>
    <h1>Photo Number 2</h1>
    <p>description2</p>
    <p><img src="../images/2.jpg"/></p>
';
// Print HTML content
echo $contentHTML;

我的问题是 我的HTML代码包含images URLs
我当前的图像文件夹(图像)在应用程序服务器

但未来预计会更改此文件夹

  • 进入另一个文件夹
  • 进入另一台服务器

因此,替换所有图像网址

将是一项非常复杂和艰巨的任务

然后
任何想法或技巧 如何在DB中存储的HTML内容中嵌入图像的动态URL 或者如何使其可配置?

2 个答案:

答案 0 :(得分:1)

我通常会为这种场景制作一个临时脚本。

第1步:

用动态已知变量替换所有硬链接。

../images/ to [[PUBLIC_PATH]][[IMG_DIR]]

第2步:

使用前,将实际的服务器地址和图像目录替换为您添加的变量。

E.g。

contentHTML  = NDatabase::getAssoc("select myField from myTable");//yada yada      
$contentHTML = 
'
    <h1>Photo Number 1</h1>
    <p>description1</p>
    <p><img src="[[PUBLIC_PATH]][[IMG_DIR]]/1.jpg"/></p>
    <h1>Photo Number 2</h1>
    <p>description2</p>
    <p><img src="[[PUBLIC_PATH]][[IMG_DIR]]/2.jpg"/></p>
';

$myNewServerPath = "http://www.mysite.come/en/";
$myPublicFolder = "{myNewServerPath}public/";
$myImgDir = "img"



 $newContent = str_replace(array("[[PUBLIC_PATH]]","[[IMG_DIR]]") ,  array($myPublicFolder,$myImgDir )  ,$contentHTML  )

之后,您可以更新数据库,也可以只使用代码。

就个人而言,我有一个文件,其中包含动态生成的常量列表,以获取站点名称,站点URL,站点子文件夹等。

define("CURR_PATH","http://$_SERVER[SERVER_NAME]/");//
猜猜你有这个想法。

答案 1 :(得分:-1)

您可以使用mod_rewrite重写网址以指向新位置。

例如:

RewriteRule ^images/(.*)$ new-images-folder/$1 [NC,L]