php preg_match_all 和 str_replace 替换图片链接
需求:在 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 替换图片链接的更多相关文章
- C#解析Markdown文档,实现替换图片链接操作
前言 又是好久没写博客了 其实也不是没写,是最近在「做一个博客」,从2月21日开始,大概一个多星期的时间,疯狂刷进度,边写代码边写了一整系列的博客开发笔记,目前为止已经写了16篇了,然后上3月之后工作 ...
- dedecms5.7文章页替换掉特定标志的图片链接
dedecms5.7文章页的替换掉特定标志的图片链接 解决思路 1个是在数据库里面执行替换操作 我自己查看 织梦后台也有这个功能 但是执行了一次 效果不是很好 那么就用下面的 在模板中进行内容替 ...
- .md图片链接转存并替换路径,及相关报错解决方法
最初我想把Typora中.md文件中的web图片链接都下载保存到本地,并且替换.md文本中的路径 说干就干,因为在网上没有找到现成的程序所以自己写了这个程序 思路是循环查找文件夹中的文件,然后yiel ...
- Webi Report 展示 图片链接 (Image Link)
最近由于项目需求,在生成的Webi Report中需要增加一列展示相关数据系统的图片链接,要求用户可以通过点击图片链接展示图片. 方法如下: 1,首先找到系统中图片,查看随机一张图片的属性,找到图片的 ...
- H5学习之旅-H5的超链接以及图片链接(6)
链接内容 1.文本链接 2.图片链接 属性 href:指向另一个文档的链接 name:文档内部的链接 img标签属性 alt:替换文本属性 width:宽 height:高 代码实例 <!DOC ...
- 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 ...
- 使用Jsoup解决网页中图片链接问题
在做Facebook和WhatsApp分享的时候,分享出去的谷歌短链,Facebook获取不到大图,和竞品展示的不一样,WhatsApp分享出去的短链没有图片和描述. WhatsApp: 分析竞品UC ...
- 使用HTML.ActionLink实现一个图片链接
学习ASP.NET MVC 的Razor的语法,尝试把一段普能的图片链接<a ...><img ... />改为HTML.ActionLink实现. 最原始的代码: <a ...
- 如何获取Flickr图片链接地址作为外链图片
Flickr,雅虎旗下图片分享网站.为一家提供免费及付费数位照片储存.分享方案之线上服务,也提供网络社群服务的平台.其重要特点就是基于社会网络的人际关系的拓展与内容的组织.这个网站的功能之强大,已超出 ...
随机推荐
- Material Design综合实例
背景知识 drawlayout的使用 recycleView的使用 CardView的使用 一些开源动画库的使用 ImageView的scaleType属性与adjustViewBounds属性 ,参 ...
- MySQL和PHP基础考试错题回顾
13.关于exit( )与die( )的说法正确的是( B) C A.当exit( )函数执行会停止执行下面的脚本,而die()无法做到 B.当die()函数执行会停止执行下面的脚本,而exit( ) ...
- Java 四舍五入
http://www.cnblogs.com/xd502djj/archive/2011/07/21/2112683.html
- 关于Java异常和错误的几个问题
1.Java中什么是Exception? 异常是Java传达给你的系统和程序错误的方式. 在java中,异常功能是通过实现比如Throwable,Exception,RuntimeException之 ...
- 深入学习SQL的Limit语句
一.基本语法 SQL的limit语法的如以下形式 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset 当省略offset的时候 ...
- oracle 10g 学习之.NET使用Oracle数据库(14)
因为使用System.Data.OracleClient会提示过时,推荐使用oracle自己提供的.net类库Oracle.DataAccess.Client 在oracle C:\oracle\pr ...
- 如何在postgresql中模拟oracle的dual表,来测试数据库最基本的连接功能?
还好,网上弄到的,,没有dual的数据库,可以试图用select函数不带from数据表的方式来实现返回值. 一段测试代码: try: conn = psycopg2.connect(database= ...
- URL和URI的区别与联系
转自:http://win7452.blog.51cto.com/147513/45741 今天在看STRUTS配置的时候,发现一个问题,就是在看配置文件的时候,有时出现URL有时又是URI, 让我心 ...
- Individual Project - Word frequency program-11061171-MaoYu
BUAA Advanced Software Engineering Project: Individual Project - Word frequency program Ryan Mao (毛 ...
- zookeeper理论
第一章 Zookeeper server 1.1 Zookeeper基本原理 1.1.1 Zookeeper的保证 l 顺序性,client的updates请求都会根据它发出的 ...