js获取富文本中的第一张图片(正则表达式)


本文整理自网络,侵删。

 js获取富文本中的第一张图片url正则公式及去除字符串里面的html标签
后台发来一个富文本字符串里面可能包含了0、1、2、3…个图片标签(img),我们的任务是获取这个字符串里面第一张图片的url,如果没有图片则返回空

var imgUrlFun = function(str){
  var data = '';
   str.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/, function (match, capture) {
     data = capture;
   });
  return data
 }

去除字符串里面的html标签的正则公式

var filterHTMLTag = function (str) {
  str = str.replace(/<\/?[^>]*>/g,''); //去除HTML tag
  str = str.replace(/[ | ]*\n/g,'\n'); //去除行尾空白
  str=str.replace(/ /ig,'');//去掉 
  return str;
 }

js如何获取ueditor里面的第一张图片

想获取ueditor里面第一张图片作为缩略图,怎么获取,ueditor里面全部是以文本方式储存的

UE.getPlainTxt() 可获取到编辑器中的纯文本内容,有段落格式
UE.getContentTxt() 可获取到编辑器中的纯文本内容,没有段落格式;

ueditor 没有提供直接获取图片的功能,可以UE.getContent() 获取全部内容,使用正则表达式 筛选出图片,我提供一个使用JAVA写的筛选方法,前台js代码类似:

Pattern p_img = Pattern.compile("(]+src\s*=\s*'\"['\"][^>]*>)");
Matcher m_img = p_img.matcher(content);
while (m_img.find()) {
String img = m_img.group(1); //m_img.group(1) 为获得整个img标签 m_img.group(2) 为获得src的值
}

可以打开ueditor.all.min.js 查看,里面有所有支持的方法 注释也都很明白

ueditor发布文章获取第一张图片为缩略图实现方法

正则匹配图片地址获取第一张图片地址
此为函数 在模块或是全局Common文件夹中的function.php中

/**
 * [getPic description]
 * 获取文本中首张图片地址
 * @param [type] $content [description]
 * @return [type]   [description]
 */
 function getPic($content){
  if(preg_match_all("/(src)=([\"|']?)([^ \"'>]+\.(gif|jpg|jpeg|bmp|png))\\2/i", $content, $matches)) {
   $str=$matches[3][0];
  if (preg_match('/\/Uploads\/images/', $str)) {
   return $str1=substr($str,7);
  }
 }
}

用法演示

$content=I('post.body');//获取富文本编辑器内容
  $info=getPic($content);//使用函数 返回匹配地址 如果不为空则声称缩略图
  if(!$info==null){
   $thumb=$info.'thumb240x160.png';
   $image = new \Think\Image();//实例化图像处理,缩略图功能
   $image->open($info);// 生成一个居中裁剪为240*160的缩略图
   $unlink=$image->thumb(240, 160,\Think\Image::IMAGE_THUMB_CENTER)->save($thumb);
  }else{
   $thumb='';
  }

dedecms中的js获取fckeditor中的图片

function get_firstimg(){
 //var c=document.getElementById('body').value;
 var c=FCKeditorAPI.GetInstance('body').GetXHTML(true);
 if(c){
 var fimg=c.match(/<img(.*?) src=["|'](.*?)["|'](.*?)>/);
 if(fimg[2]){
 document.getElementById('picname').value=fimg[2];
 if(document.getElementById('ImgPr'))document.getElementById('ImgPr').src=fimg[2];//预览
 if(document.getElementById('picview'))document.getElementById('picview').src=fimg[2];//预览
 }
 }
}

再补充一个完整的

js获取UEditor文本编辑器中的图片地址

写之前在网上找了很多方法,最简单的思路应该是1.获取UEditor中的内容;2.将获取到的字符串转换成jquery对象;3.选择器找到img元素,获取src值。

var content= UE.getEditor('details').getContent();//获取编辑器内容
var $div = document.createElement("div");//创建一个div元素对象
$div.innerHTML = content;//往div里填充html
var $v = $($div);//从dom对象转换成jquery对象
$.each($v.find("img"),function (v,i) {//选择器找到img元素,循环获取src值
console.log("src======"+i.src);
});

打印结果:

写出上面代码之前碰了几次壁,绕了几个弯,下面就是我整个开发过程,记录下。

1.获取UEditor中的内容

这一步很简单,使用编辑器提供的getContent()函数

阅读剩余部分

相关阅读 >>

dedecms直接访问域名不能跳转到index.php

dedeeims后台栏目模板(含单独页模板)修改方法

dedecms实现有短标题时显示短标题、无短标题时显示长标题的方法

mysql时间字段究竟使用int还是datetime的说明

脚本之家使用火车头发布dedecms 5.5 出现乱码的解决办法

dedecms文章列表每5隔行加横线的实现方法

dedecms负载性能优化实例,三招让你的dedecms快10倍以上第12页

dedecms实现tags云标签随机颜色与字体大小方法详解

dedecms织梦模板用array调用多个自定义字段并判断的方法

dedecms不支持php5.3、5.4及以上版本后台500错误白屏的解决方法

更多相关阅读请进入《织梦DedeCMS》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...