php 截取字符串bug
2015-09-23 10:35
746 查看
php有很多截取字符串的函数,mb_substr就是其中一个,不仅适用于英文还适合中文截取。
但是在截取字符串,我遇到了以下bug
由于在截取时,可能会截取到html标签,因为我的content是从后台编辑文章而来,文本编辑器里有很多的标签,当截取位置不恰当时,就导致了div标签配对的乱套。
解决 方法是去除要截取内容中的html标签。
把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体:
以上代码的 HTML 输出如下(查看源代码):
以上代码的浏览器输出:
但是在截取字符串,我遇到了以下bug
$result = mysql_query($sql); while($row = mysql_fetch_assoc($result)){ ?> <div class="section"> <div class="article-time"><?php echo date("Y-m-d",$row['a_time']); ?></div> <div class="article-title"><a href="article.php?a_id=<?php echo $row['a_id'] ?>"><?php echo $row['a_title']; ?></a></div> <div class="article-content"> <?php $string = preg_replace ("/(\<[^\<]*\>|\r|\n|\s|\[.+?\])/is", ' ', $row['a_content']); //转义html标签 $string = htmlspecialchars($string); echo mb_substr($string, 0,180,'utf-8'); ?>...... </div> </div> <?php }
由于在截取时,可能会截取到html标签,因为我的content是从后台编辑文章而来,文本编辑器里有很多的标签,当截取位置不恰当时,就导致了div标签配对的乱套。
解决 方法是去除要截取内容中的html标签。
<?php $string = preg_replace ("/(\<[^\<]*\>|\r|\n|\s|\[.+?\])/is", ' ', $row['a_content']); $string = htmlspecialchars($string); echo mb_substr($string, 0,180,'utf-8'); ?>......
实例
把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体:<?php $str = "This is some <b>bold</b> text."; echo htmlspecialchars($str); ?>
以上代码的 HTML 输出如下(查看源代码):
<!DOCTYPE html> <html> <body> This is some <b>bold</b> text. </body> </html>
以上代码的浏览器输出:
This is some <b>bold</b> text.
相关文章推荐
- PHP列表一次性读取字段信息
- php字符串转时间戳
- PHP Ajax轮询
- 在XP系统上出现无法定位程序输入点 K32GetProcessMemoryInfo
- 在XP系统上出现无法定位程序输入点 K32GetProcessMemoryInfo
- V9站点名称的调用方法
- PHP获取用户真实IP
- 基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
- laravel 教程链接
- ThinkPHP——RBAC角色和权限数据模拟及设计
- vsftpd.conf配置详解
- PhpStorm的使用
- vsftp服务详解
- 基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
- PHP提高编程效率的20个要点
- PHPStrom中实用的功能和快捷键大全
- PHP中常见的缓存技术实例分析
- php实现的单一入口应用程序实例分析
- php实现简单的MVC框架实例
- php中session_id()函数详细介绍,会话id生成过程及session id长度