讨论对中文文章分行进行处理,但出现乱码的问题!在线等!

gOODiDEA 2002-12-26 09:57:23
先请看看:
1、http://gnovels.com/show.php?id=shangqing&&name=1308&&showdetail=yes
2、http://gnovels.com/show1.php?id=shangqing&&name=1308&&showdetail=yes

1是没有处理的,2的部分代码如下:
for( $i = $yjBegin; $i < $yjEnd; $i++ )
{
$tmpmsg = $message[$i];//取出一段文章
$msg_len = strlen( $tmpmsg );
$BeiginCount = 0;
$EndCount = 104;//每段大于104则分行
$nCount= 0;
while ( $msg_len > $EndCount )
{
$jj = 0;
$num = 104;
for ( $ii = $BeiginCount ; $ii < $EndCount; $ii++ )
{
if ( ord ( substr( $tmpmsg, $ii, 1 ) ) > 0xa0 )
{
$jj++;
}
}
if ( $jj % 2 != 0 )
{
$num++;
}
$str[ $nCount ] = substr( $tmpmsg, $BeiginCount, $num );
$BeiginCount = $BeiginCount + $num;
$EndCount = $BeiginCount + $num;
$nCount = $nCount + 1;
$str[ $nCount ] = substr( $tmpmsg, $BeiginCount );
}
//输出部分,如果没有分行,则直接输出。
if ( $nCount == 0 )
{
if ( ltrim( $tmpmsg ) == "" || ltrim( $tmpmsg ) == "<br>" )
continue;

print("<tr align=left valign=top>");
print("<td><span class=p4><font color=#000000>$tmpmsg </font></span></td>\n");
print("</tr>");
}
else
{
for ( $fcount = 0; $fcount <= $nCount; $fcount++ )
{
print("<tr align=left valign=top>");
print("<td><span class=p4><font color=#000000>$str[$fcount] </font></span></td>\n");
print("</tr>");
}
}
}
...全文
38 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
uGain 2002-12-27
  • 打赏
  • 举报
回复
可以试试截取后,将每部分先trim(),再输出。
gOODiDEA 2002-12-27
  • 打赏
  • 举报
回复
to uGain(幽亙),那个FAQ和我实现的方法差不多。

因为我切取一段之后,还得在那基础上继续取,所以就有可能出现乱码,但乱码出现没有规律,同等长度的一段文章有时有,有时又没有。
gOODiDEA 2002-12-26
  • 打赏
  • 举报
回复
谢谢,我试试!
uGain 2002-12-26
  • 打赏
  • 举报
回复
中文字串截取问题:
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=10877
1725 2002-12-26
  • 打赏
  • 举报
回复
我以前曾将中文的内容分行保存在数据库中,做法大概如下:
在要分行的地方,用字符串函数判断该行最后两个字符的ASCII码(中文占两个字符),看其值的大小,如果有在一百二十多(具体记不清了,你可查看有关ASCII码的书)以上则为中文。判断好最后一个是中文还是其它字符后就可以正确保存。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧