php 截取字符串bug

php有很多截取字符串的函数,mb_substr就是其中一个,不仅适用于英文还适合中文截取。

但是在截取字符串,我遇到了以下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.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值