免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2970 | 回复: 9
打印 上一主题 下一主题

用substr提取字符遇到图片,怎么处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-28 13:55 |只看该作者 |倒序浏览
比如我提取出一篇文章时,只要用到前面的50个字
我用:
$m=substr($article,0,100)
但当遇到有图片或其它内容时,却不能跳过取下面的字

该怎么处理这个问题啊

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
2 [报告]
发表于 2007-04-28 14:53 |只看该作者
当然先用正则分析去掉无用的部分啦。

论坛徽章:
0
3 [报告]
发表于 2007-04-28 15:15 |只看该作者
strip_tags();

论坛徽章:
0
4 [报告]
发表于 2007-04-28 16:11 |只看该作者
一般做文字字数限制或分页的或采集的
都要先把图片这类的东西去掉

论坛徽章:
0
5 [报告]
发表于 2007-04-28 18:54 |只看该作者
原帖由 笨狼追风 于 2007-4-28 15:15 发表
strip_tags();


我用了这个没起作用

论坛徽章:
0
6 [报告]
发表于 2007-04-29 07:53 |只看该作者

回复 5楼 lxc521 的帖子

把你的那段代码发上来看看,我也是用的strip_tags(); 来弄得。

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
7 [报告]
发表于 2007-04-29 09:05 |只看该作者

  1. <?php
  2. $summary = url_to_link($summary);
  3. $summary = strip_tags_except($summary, array('a'), FALSE);
  4. ?>
  5. <?php
  6. function strip_tags_except($text, $allowed_tags, $strip=TRUE) {
  7.   if (!is_array($allowed_tags))
  8.     return $text;

  9.   if (!count($allowed_tags))
  10.     return $text;

  11.   $open = $strip ? '' : '&lt;';
  12.   $close = $strip ? '' : '&gt;';

  13.   preg_match_all('!<\s*(/)?\s*([a-zA-Z]+)[^>]*>!',
  14.     $text, $all_tags);
  15.   array_shift($all_tags);
  16.   $slashes = $all_tags[0];
  17.   $all_tags = $all_tags[1];
  18.   foreach ($all_tags as $i => $tag) {
  19.     if (in_array($tag, $allowed_tags))
  20.       continue;
  21.     $text =
  22.       preg_replace('!<(\s*' . $slashes[$i] . '\s*' .
  23.         $tag . '[^>]*)>!', $open . '$1' . $close,
  24.         $text);
  25.   }

  26.   return $text;
  27. }

  28. function url_to_link($text) {
  29.   $text =
  30.     preg_replace('!(^|([^\'"]\s*))' .
  31.       '([hf][tps]{2,4}:\/\/[^\s<>"\'()]{4,})!mi',
  32.       '$2<a href="$3">$3</a>', $text);
  33.   $text =
  34.     preg_replace('!<a href="([^"]+)[\.:,\]]">!',
  35.     '<a href="$1">', $text);
  36.   $text = preg_replace('!([\.:,\]])</a>!', '</a>$1',
  37.     $text);
  38.   return $text;
  39. }
  40. ?>
复制代码

论坛徽章:
0
8 [报告]
发表于 2007-05-04 21:47 |只看该作者
HonestQiao
我看正则表达式里好像并没有!的介绍
不知道这个在你上面的代码中起什么作用,能否说明一下呢

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
9 [报告]
发表于 2007-05-05 09:53 |只看该作者
原帖由 lxc521 于 2007-5-4 21:47 发表
HonestQiao
我看正则表达式里好像并没有!的介绍
不知道这个在你上面的代码中起什么作用,能否说明一下呢


友情提示:请非特别仔细看手册:
http://cn.php.net/manual/zh/ref.pcre.php

  1. 本类函数中所使用的模式极其类似 Perl。表达式应被包含在定界符中,如斜线(/)。任何不是字母、数字或反斜线(\)的字符都可以作为定界符。如果作为定界符的字符必须被用在表达式本身中,则需要用反斜线转义。自 PHP 4.0.4 起,也可以使用 Perl 风格的 (),{},[] 和 <> 匹配定界符。详细解释见模式语法。
复制代码

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
10 [报告]
发表于 2014-11-11 22:36 |只看该作者
谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP