我现在是
从数据库中取出的变量是
$str="加辣,加甜,加饭量,加多点饭啦"; (utf-8)
我要在字符串中间加一个换行.
现在我能加到.但是问题是:因为字符串有中文 和英文标点 所以在字符串中间 加多 \n的话
就出现了乱码了.<?
$str2="飯你;任吃;飯你;任吃;飯你;任吃;飯你;任吃;";
$str_count=mb_strlen($str2,'utf8') / 2;
$strSS_DD=wordwrap($str2,$str_count,"\\n",true);
echo $strSS_DD;
?>
<html>
<head>
<meta http-equiv="Content-Language" content="en" />
<meta name="GENERATOR" content="PHPEclipse 1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="JavaScript" type="text/javascript">
var a="1,0";
var s=a.split(",");
for(var i=0;i<s.length;i++)
{
// alert(s[i]);
if(s[i]>0)
{
break;
}
}
alert("<?=$strSS_DD?>");
</script><title>title</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#FF9966" vlink="#FF9966" alink="#FFCC99"></body>
</html>
从数据库中取出的变量是
$str="加辣,加甜,加饭量,加多点饭啦"; (utf-8)
我要在字符串中间加一个换行.
现在我能加到.但是问题是:因为字符串有中文 和英文标点 所以在字符串中间 加多 \n的话
就出现了乱码了.<?
$str2="飯你;任吃;飯你;任吃;飯你;任吃;飯你;任吃;";
$str_count=mb_strlen($str2,'utf8') / 2;
$strSS_DD=wordwrap($str2,$str_count,"\\n",true);
echo $strSS_DD;
?>
<html>
<head>
<meta http-equiv="Content-Language" content="en" />
<meta name="GENERATOR" content="PHPEclipse 1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script language="JavaScript" type="text/javascript">
var a="1,0";
var s=a.split(",");
for(var i=0;i<s.length;i++)
{
// alert(s[i]);
if(s[i]>0)
{
break;
}
}
alert("<?=$strSS_DD?>");
</script><title>title</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#FF9966" vlink="#FF9966" alink="#FFCC99"></body>
</html>
<?
$str2="飯你;任吃;飯你;任吃;飯你;任吃;飯你;任吃;";
$str_count=mb_strlen($str2,'utf8') / 2;
//$strSS_DD=wordwrap($str2,$str_count,"\\n",true);
$strSS_DD=str_replace(';', ';\\r\\n', $str2);
echo $strSS_DD;
?>
<html>
<head>
<meta http-equiv="Content-Language" content="en" />
<meta name="GENERATOR" content="PHPEclipse 1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<script language="JavaScript" type="text/javascript">
var a="1,0";
var s=a.split(",");
for(var i=0;i<s.length;i++)
{
// alert(s[i]);
if(s[i]>0)
{
break;
}
}
alert("<?=$strSS_DD?>");
</script><title>title</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#FF9966" vlink="#FF9966" alink="#FFCC99"></body>
</html>
这样不行么?
mb_strlen计算出来的本来就是字符数而不是字节数,而且一个字是3字节wordwrap是根据字节数,你要自己写函数来做这个
如果你是根据;来加\n的,可以$str = str_replace(';', ';\\n', $str);
http://www.pczpg.com/a/2010/0223/1658.html
前一段,加上\n,再加上后一段
+的确,如果单纯往里面加\n就会出现论吗,琢磨了下,就是mb_strlen()的问题
你先安装你要求的长度分割这个字符串,然后加换行符再连起来不就行了。
$str_count = mb_strlen($str2,'utf-8');//utf-8,不是utf8,不要搞错咯。
$mid = ceil($str_count/2);
echo mb_substr($str2,0,$mid,'utf-8')."<br/>".mb_substr($str2,$mid,$str_count,'utf-8');//不用wordwrap
$pos = floor($len / 2);
$newstr = mb_substr($str, 0, $pos, 'utf-8').'\\n'.mb_substr($str, $pos, $len - $pos, 'utf-8');
<?
$str2="我要;华丽的;换行;真的不;能成功吗";
//$str3="飯你;任吃;飯你;任吃;飯你;任吃;飯你;任吃;";
$str_count=gb2312_strlen($str2)/2;
echo $str_count."<br/>";
$strSS_DD=gb2312_substr($str2,0,$str_count)."<br/>".gb2312_substr($str2,$str_count,gb2312_strlen($str2));echo $strSS_DD;
/*********************************************************************
* 统计中文字符串长度 *
* 调用方法 gb2312_strlen("要统计的字符串") *
* JspBoy 完成于 2007年12月14日 正在完善…… *
*********************************************************************/
function gb2312_strlen($string)
{
$str_len = strlen($string);
$str_count = 0;
for($j = 0; $j < $str_len; $j++)
{
if(ord($string{$j}) < 127)
{
$str_count += 1;
continue;
}
else
{
if(ord($string{$j+1}) > 127)
{
$str_count += 1;
$j++;
continue;
}
else
{
$str_count += 1;
continue;
}
}
}
return $str_count;
}
/*********************************************************************
* 分割中文字符串 *
* 调用方法 gb2312_substr("要分割的字符串", "开始位置", "结束位置") *
* JspBoy 完成于 2007年12月14日 正在完善…… *
*********************************************************************/
function gb2312_substr($string, $start = 0, $len = 10)
{
$end = $start + $len;
$str_len = strlen($string);
if($end > $str_len)
{
return $string;
}
$start_count = 0;
//找开始位置
for($j = 0; $j < $str_len; $j++)
{
if($start_count >= $start)
{
break;
}
if(ord($string{$j}) < 127)
{
$start_count += 1;
continue;
}
else
{
if(ord($string{$j+1}) > 127)
{
$start_count += 1;
$j++;
continue;
}
else
{
$start_count += 1;
continue;
}
}
}
//取字符
$s = '';
$result_count = 0;
for($i = $j; $i < $str_len; $i++)
{
if($result_count >= $len)
{
break;
}
if(ord($string{$i}) < 127)
{
$s .= $string{$i};
$result_count += 1;
continue;
}
else
{
if(ord($string{$i+1}) > 127)
{
$s .= $string{$i} . $string{++$i};
$result_count += 1;
continue;
}
else
{
continue;
}
}
}
return $s;
}
?>
同时也谢谢其他phper....