php 截取字符串bug

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

但是在截取字符串,我遇到了以下bug

$result = mysql_query($sql);
				while($row = mysql_fetch_assoc($result)){
					?>
					
|\r|\n|\s|\[.+?\])/is", ' ', $row['a_content']); //转义html标签 $string = htmlspecialchars($string); echo mb_substr($string, 0,180,'utf-8'); ?>......



由于在截取时,可能会截取到html标签,因为我的content是从后台编辑文章而来,文本编辑器里有很多的标签,当截取位置不恰当时,就导致了div标签配对的乱套。

解决 方法是去除要截取内容中的html标签。

|\r|\n|\s|\[.+?\])/is", ' ', $row['a_content']);
	$string = htmlspecialchars($string);
	echo mb_substr($string, 0,180,'utf-8'); 
?>......

实例

把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体:

bold text.";
echo htmlspecialchars($str);
?>

以上代码的 HTML 输出如下(查看源代码):




This is some bold text.


以上代码的浏览器输出:

This is some bold text.



你可能感兴趣的:(php)