需求:在 a 网站的后台添加一片文章,需要同步到 b 网站(两个网站数据库在同一台服务器)。

思路是添加文章时,除了往 b 网站的数据库中添加数据外,再往 a 网站的数据库中添加数据。

a 添加文章的控制器,加上往 b 网站数据库中插入数据的程序:

//把文章同时更新到crm项目:数据库-crm,表-article_info
$aObj_c = M('article_info', 'crm_', 'DB_CRM');
$data['title'] = $_POST['etitle'];
$data['keywords'] = $_POST['ekeywords'];
$data['description'] = $_POST['edescription'];
$data['content'] = $_POST['content'];
$data['order'] = $_POST['sort_order'];
$data['is_show'] = $_POST['estatus'] == 0?1:0;
$data['type_id'] = 3;
$data['create_time'] = time();
$result_c = $aObj_c->data($data)->add();

添加完之后,因为 a 网站在添加文章的时候很可能会添加图片,而此时发现 a 网站在保存图片的时候图片是相对目录存储的,例如: /Public/keditor/attached/image/20150902/20150902131620_93317.jpg

那么此时 b 网站就不会显示出文章的图片的。

可以在 b 网站的文章控制器中取出文章的内容,通过正则匹配和字符串替换来显示图片:

① 取出 b 数据库中文章内容部分,这里是  $result1['content']

② 在文章内容的 html 中使用 preg_match_all 匹配出所有的 img 标签

③ 当不含有 http:// 时,说明是相对路径的图片地址,则拼接上 a 网站的域名,替换原来的 html 内容

$type_id = M("article_type")->where("name = '站内公告'")->getField("id");
$id = $_GET['id'];
$result1= M("Article_info")->where("id = $id")->find(); preg_match_all("/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg]))[\'|\"].*?[\/]?>/", $result1['content'], $tmp);
foreach($tmp as $key=>$val){
if($key > 0){
foreach($val as $k=>$v){
if(strpos($v, 'http://') === false){
$result1['content'] = str_replace($v, 'http://www.ofim.com.cn/'.$v, $result1['content']);
}
}
}
}
$this->assign("result1",$result1);

参考:《ThinkPHP3.2完全开发手册》 模型 -- 连接数据库 -- 三 实例化定义

除了在模型定义的时候指定数据库连接信息外,我们还可以在实例化的时候指定数据库连接信息,例如: 如果采用的是M方法实例化模型的话,也可以支持传入不同的数据库连接信息,例如:

$User = M('User','other_','mysql://root:1234@localhost/demo#utf8');

表示实例化User模型,连接的是demo数据库的other_user表,采用的连接信息是第三个参数配置的。如果我们在项目配置文件中已经配置了DB_CONFIG2的话,也可以采用:

$User = M('User','other_','DB_CONFIG2');

需要注意的是,ThinkPHP的数据库连接是惰性的,所以并不是在实例化的时候就连接数据库,而是在有实际的数据操作的时候才会去连接数据库(额外的情况是,在系统第一次实例化模型的时候,会自动连接数据库获取相关模型类对应的数据表的字段信息)。

php preg_match_all 和 str_replace 替换图片链接的更多相关文章

  1. C#解析Markdown文档,实现替换图片链接操作

    前言 又是好久没写博客了 其实也不是没写,是最近在「做一个博客」,从2月21日开始,大概一个多星期的时间,疯狂刷进度,边写代码边写了一整系列的博客开发笔记,目前为止已经写了16篇了,然后上3月之后工作 ...

  2. dedecms5.7文章页替换掉特定标志的图片链接

    dedecms5.7文章页的替换掉特定标志的图片链接 解决思路 1个是在数据库里面执行替换操作 我自己查看 织梦后台也有这个功能  但是执行了一次 效果不是很好  那么就用下面的  在模板中进行内容替 ...

  3. .md图片链接转存并替换路径,及相关报错解决方法

    最初我想把Typora中.md文件中的web图片链接都下载保存到本地,并且替换.md文本中的路径 说干就干,因为在网上没有找到现成的程序所以自己写了这个程序 思路是循环查找文件夹中的文件,然后yiel ...

  4. Webi Report 展示 图片链接 (Image Link)

    最近由于项目需求,在生成的Webi Report中需要增加一列展示相关数据系统的图片链接,要求用户可以通过点击图片链接展示图片. 方法如下: 1,首先找到系统中图片,查看随机一张图片的属性,找到图片的 ...

  5. H5学习之旅-H5的超链接以及图片链接(6)

    链接内容 1.文本链接 2.图片链接 属性 href:指向另一个文档的链接 name:文档内部的链接 img标签属性 alt:替换文本属性 width:宽 height:高 代码实例 <!DOC ...

  6. PHP 正则表达式匹配 img ,PHP 正则提取或替换图片 img 标记中的任意属性。

    PHP正则提取或替换img标记属性 PHP 正则表达式匹配 img ,PHP 正则提取或替换图片 img 标记中的任意属性.   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  7. 使用Jsoup解决网页中图片链接问题

    在做Facebook和WhatsApp分享的时候,分享出去的谷歌短链,Facebook获取不到大图,和竞品展示的不一样,WhatsApp分享出去的短链没有图片和描述. WhatsApp: 分析竞品UC ...

  8. 使用HTML.ActionLink实现一个图片链接

    学习ASP.NET MVC 的Razor的语法,尝试把一段普能的图片链接<a ...><img ... />改为HTML.ActionLink实现. 最原始的代码: <a ...

  9. 如何获取Flickr图片链接地址作为外链图片

    Flickr,雅虎旗下图片分享网站.为一家提供免费及付费数位照片储存.分享方案之线上服务,也提供网络社群服务的平台.其重要特点就是基于社会网络的人际关系的拓展与内容的组织.这个网站的功能之强大,已超出 ...

随机推荐

  1. sysctl命令详解

    个人一般sysctl -p 或sysctl -a比较多使用 sysctl配置与显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网功能,如IP转发.IP碎片去除以及源路由检 ...

  2. .net学习笔记----会话状态Session

    一.会话状态Session Session用于服务器端状态管理,使用Session之后,每个客户端都可以将实际的数据保存在服务器上,对于每个客户端的数据,将会生成一个对应的唯一的key(保存在客户端) ...

  3. PHP数组的使用方法小结

    数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体.数组的每个实体都包含两项:键和值. 一.什么是数组数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体.数组的每个实体 ...

  4. PHP 文件上传类

    FileUpload.;                $];                $_newname = date(,). :                             To ...

  5. hdu 5115 区间dp ***

    题意:有n只狼,每只狼有两种属性,一种攻击力一种附加值,我们没杀一只狼,那么我们受到的伤害值为这只狼的攻击值与它旁边的两只狼的附加值的和,求把所有狼都杀光受到的最小的伤害值. 枚举中间k作为最后杀死的 ...

  6. 《大话》之第三者家族 代理 Vs 中介者

    前两天,有个同学突然问我说:"我感觉代理模式和中介者模式不好区分,你能给我讲讲吗?" 刚开始还没敢张嘴,因为他突然一问,我貌似也不知道,经过整理,现在将结果贴出来,请大家共享 代理 ...

  7. python logging用法

    import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(line ...

  8. SU Demos-02Filtering-03Sudipfilt

    不足之处,欢迎各位博友批评指正. 进入目录,依照惯例先看Readme, 第一个脚本, 下面是运行结果: 第二个脚本: 运行结果如下: 第三个脚本: 运行结果:

  9. http://jingyan.baidu.com/article/86112f13582848273797879b.html

    http://jingyan.baidu.com/article/86112f13582848273797879b.html

  10. 二分+贪心 hihocoder 1249 Xiongnu's Land (15北京A)

    题目传送门 题意:有多个矩形分布在[0, 0]到[R, R]的的范围内,画一条竖线分割成两块矩形,使得左边包括矩形的面积大于等于右边的面积,在这个前提下使得画的竖线尽量远 分析:二分答案,当面积相等时 ...