首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP+MYSQL编程 » [原创]字符串截取的问题,请教大家!急!!!  


  作者:cykk
  注册时间:2004-12-30
  主题/回复:41/99
  积分:688
  等级:★★★(六级)
  称号:声名鹊起

  keke9668@263.net..
  272782316
  cyxk.go1.icpcn.com

 

 发表:2006-08-11 19:01:27 阅读 2208 次 回复 2 次 得分1  |   字号 字色
[原创]字符串截取的问题,请教大家!急!!!
首页文件如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>诗舞飞杨函数形式调用的实例</title>
</head>

<body>
<?
include("webfunction.inc.php");
?>
<?
list_title(newspaper,$type,$n,$start,19,TitleID,$deas,ArticleTitle,TitleID,Addtime);
?>
</body>
</html>
//list_title是一个函数,在webfunction.php中如下:

function list_title($table,$type,$n,$start,$len,$ID,$deas,$queryresult,$linkid,$Addtime)  //创建函数list_title,显示新闻标题
{   /**************************************************************************************************************
    *以下为判断参数值情况,并作出相应处理
***************************************************************************************************************/  

global $title; //全局变量$title    
if(empty($table))  //判断表名是否为空
  echo("参数错误,请输入表名"); 
if(empty($n))  //判断所要查询记录条数是否为空
  $n="10";  
if(empty($start))  //判断字符长度是否为空
  $start="0";    
if(empty($len))  //判断字符长度是否为空
  $len="20"; 
if(empty($ID)) //判断排序字段是否为空
  $ID="ID"; 
if(empty($desa))   //判断是升序还是降序是否为空
  $desa="desc";  
if(empty($type))   //判断所要查询条件是否为空
  $istype=""; 
else
  $istype="where type='$type'";
    
$query=mysql_query("select * from $table $istype order by $ID $desa limit $n"); //条件查询语句
while($array=mysql_fetch_array($query))
{
//$len=strlen($array[$queryresult]); //返回指定字符串长度
//if($len<=$m)
 //$leng=$array[$queryresult];
//else
//$leng=substr($array[$queryresult],"0",$m)."...";//截取指定长度的字符串
$str=$array[$queryresult];
$strlen=$start+$len; 
    for($i=0;$i<$strlen;$i++) 
 { 
   if(ord(substr($str,$i,1))>0xa0) 
    {   
  $tmpstr.=substr($str,$i,2); 
  $i++; 
    }   
 else 
    {
    $tmpstr.=substr($str,$i,1); 
    }
  }

$date=date("m/d",$array[$Addtime]);
echo "·<a href=showarticle.php?$linkid=$array[$linkid]>$tmpstr</a><font color=#cccccc>($date)</font><br>";
}
}
现在是能截取了,但是重复了!

附说明:
$dbname 要连接的数据库名
$table  要查询的表名      
$type   文章所属类型
$n  要查询的记录条数
$start  截取字符开始位置
$len    截取长度   
$ID 排序依据,即按什么排序
$deas   指定是升序还是降序
$queryresult  要显示的内容
$linkid  连接关键字
$Addtime  文章添加时间
 
 1#楼  
 
  回复人:cykk
  注册时间:2004-12-30
  主题/回复:41/99
  积分:688
  等级:★★★(六级)
  称号:声名鹊起

   
 1#楼 发表于2006-08-11 19:04:12  评分:× 

补充说明:
如果我用
function msubstr($str,$start,$len) 

  $strlen=$start+$len; 
   for($i=0;$i<$strlen;$i++) 
   { 
 if(ord(substr($str,$i,1))>0xa0) 
   { 
    $tmpstr.=substr($str,$i,2); 
    $i++; 
   }   
 else 
 {
 $tmpstr.=substr($str,$i,1); 
  }
    } 
  return $tmpstr; 
}
可以正常截取
 2#楼  
 
  回复人:liuxingyuyuni
  注册时间:2005-04-19
  主题/回复:2/29
  积分:444
  等级:★★☆(五级)
  称号:略有小成

   
 2#楼 发表于2006-08-11 19:17:32  评分:1 

if(empty($table))  //判断表名是否为空
  echo("参数错误,请输入表名"); 
if(empty($n))  //判断所要查询记录条数是否为空
  $n="10";  
if(empty($start))  //判断字符长度是否为空
  $start="0";    
if(empty($len))  //判断字符长度是否为空
  $len="20"; 
if(empty($ID)) //判断排序字段是否为空
  $ID="ID"; 
if(empty($desa))   //判断是升序还是降序是否为空
  $desa="desc";  
if(empty($type))   //判断所要查询条件是否为空
  $istype=""; 
else
  $istype="where type='$type'";

-----------以上代码我觉得欠佳我觉得至少应该写一个循环然后在循环当中empty.........这样代码可以更简洁-----------------------------
另外你的中文字符截取也不怎么样。。。。
网上用中文字符截取函数,写的很不错代码如下:
<?php 


function cnSubStr($string,$sublen) 

if($sublen>=strlen($string)) 

return $string; 

$s=""; 
for($i=0;$i<$sublen;$i++) 

if(ord($string{$i})>127) 

$s.=$string{$i}.$string{++$i}; 
continue; 
}else{ 
$s.=$string{$i}; 
continue; 


return $s; 
}// End Function cnSubStr($string,$sublen) 

/////////// Use like this : 

echo "<p>__________________________<p>"; 
$string="242432反对感是456犯得上广泛大使馆地方7890"; 
$sublen=strlen($string); 
$len=20; 
echo $string."<p>"; 
echo "总长为:".($sublen+1)."<p>"; 
echo "截取数:".$len."<p>"; 

for($i=1;$i<=$sublen+1;$i++){ 
if($i>$len){ 
echo $i."<b> →</b> ".cnSubStr($string,$i)."…<br>"; 
continue; 

echo $i."<b> →</b> ".cnSubStr($string,$i)."<br>"; 


?> 网上随便找的,但是以前看过比这个更好的,你再仔细找下噢.
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.008sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版