lt;原创>截取标题前几个汉字时怎样使1汉字=2字符

作者&投稿:欧残 (若有异议请与网页底部的电邮联系)
ASP怎么截取字符串。就截取前40个汉字~

<%'txt是字符内容,length是要截取多少个字符
Function GetStringLength(txt,length)
dim i
i=1
y=0
txt=trim(txt)
for i=1 to len(txt)
j=mid(txt,i,1)
if asc(j)>=0 and asc(j)<=127 then '汉字外的其他符号,如:!@#,数字,大小写英文字母
y=y+0.5
else '汉字
y=y+1
end if
if -int(-y) >= length then '截取长度
txt = left(txt,i)
exit for
end if
next
response.write txt
End Function
%> 调用方法:

一般英文字符占一个字节,汉字占两个字节,有这么一种思路,在截取字符串的时候逐个判断要截取的字符是汉字还是英文字符,这样就不会出现错误了,下边给你帖一个我写的程序,你自己看下


无标题文档




<?php
function msubstr($str,$start,$len){

}
?>

输入字符串:

输入起始位置:

输入截取长度:



<?php
/*截取字符串的函数--------------数组式截取*/
function msubstr2($str,$start,$len){
$t = explode(" ",microtime());
$tt = round($t[0],5);
//将字符串中每个字符分开 并放到数组中
$str_arr = array();
$j = 1;
for($i=0;$i<strlen($str);$i++){
if(ord(substr($str,$i,1))>0xa0){ //说明是汉字 则需要一次截取3个字符
$str_arr[$j] = substr($str,$i,3);
$i = $i+2;
}else{
$str_arr[$j] = substr($str,$i,1);
}
$j++;
}
print_r($str_arr);
for($i=$start;$i<=$len+$start-1;$i++){
if($i>count($str_arr)){ //判断是否超出数组最大长度 如果是 则结束循环
break;
}
$str_temp .= $str_arr[$i];
}
$t = explode(" ",microtime());
$ttt = round($t[0],5);
return $ttt-$tt;
//return $str_temp;
}
function msubstr1($str,$start,$len){
$t = explode(" ",microtime());
$tt = round($t[0],5);
$j = 0; //记录截取的字符串的字符位置
$s = 0; //记录已经截取的字符长度
$str_temp = "";//记录截取的字符串
$k = strlen($str);
for($i=0;$i<$k;){//循环全部字
if($s>=$len) break;//如果已经截取的字符串长度超过要截取的长度 跳出循环 返回结果
if(ord(substr($str,$i,1))>0xa0){ //判断是否为汉字
if($j+1>=$start){//如果当前截取字符位置大于等于要截取的字符串的开始位置并且当前已经截取的字符长度还没有超出要截取的字符串的长度 则将此字符为要截取的字符
$str_temp .= substr($str,$i,3);
$s++;//已经截取的字符串长度加1
}
$j++;//当前截取的字符串的位置加1
$i+=3;//确定为汉字 在utf8编码下占三个英文字符的长度 则需要记录三个字符
}else{
if($j+1>=$start){
$str_temp .= substr($str,$i,1); //截取英文字符
$s++;//已经截取的字符串长度加1
}
$j++;//当前截取的字符串的位置加1
$i++;//非汉字字符占一个字符的长度
}
}
$t = explode(" ",microtime());
$ttt = round($t[0],5);
//return $ttt-$tt;
return $str_temp;
}
if($_POST[sub]){
echo msubstr1($_POST[str],$_POST[str_start],$_POST[str_len]);
}
?>

一般英文字符占一个字节,汉字占两个字节,有这么一种思路,在截取字符串的时候逐个判断要截取的字符是汉字还是英文字符,这样就不会出现错误了,下边给你帖一个我写的程序,你自己看下
<html>
<head>
<title>无标题文档</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body>
<?php
function msubstr($str,$start,$len){

}
?>
<form action="" name="myform" method="post">
输入字符串:<input type="text" name="str" value="5555我爱My祖国" /><br />
输入起始位置:<input type="text" name="str_start" /><br />
输入截取长度:<input type="text" name="str_len" /><br />
<input type="submit" name="sub" value="开始截取字符串" />
</form>
<?php
/*截取字符串的函数--------------数组式截取*/
function msubstr2($str,$start,$len){
$t = explode(" ",microtime());
$tt = round($t[0],5);
//将字符串中每个字符分开 并放到数组中
$str_arr = array();
$j = 1;
for($i=0;$i<strlen($str);$i++){
if(ord(substr($str,$i,1))>0xa0){ //说明是汉字 则需要一次截取3个字符
$str_arr[$j] = substr($str,$i,3);
$i = $i+2;
}else{
$str_arr[$j] = substr($str,$i,1);
}
$j++;
}
print_r($str_arr);
for($i=$start;$i<=$len+$start-1;$i++){
if($i>count($str_arr)){ //判断是否超出数组最大长度 如果是 则结束循环
break;
}
$str_temp .= $str_arr[$i];
}
$t = explode(" ",microtime());
$ttt = round($t[0],5);
return $ttt-$tt;
//return $str_temp;
}
function msubstr1($str,$start,$len){
$t = explode(" ",microtime());
$tt = round($t[0],5);
$j = 0; //记录截取的字符串的字符位置
$s = 0; //记录已经截取的字符长度
$str_temp = "";//记录截取的字符串
$k = strlen($str);
for($i=0;$i<$k;){//循环全部字
if($s>=$len) break;//如果已经截取的字符串长度超过要截取的长度 跳出循环 返回结果
if(ord(substr($str,$i,1))>0xa0){ //判断是否为汉字
if($j+1>=$start){//如果当前截取字符位置大于等于要截取的字符串的开始位置并且当前已经截取的字符长度还没有超出要截取的字符串的长度 则将此字符为要截取的字符
$str_temp .= substr($str,$i,3);
$s++;//已经截取的字符串长度加1
}
$j++;//当前截取的字符串的位置加1
$i+=3;//确定为汉字 在utf8编码下占三个英文字符的长度 则需要记录三个字符
}else{
if($j+1>=$start){
$str_temp .= substr($str,$i,1); //截取英文字符
$s++;//已经截取的字符串长度加1
}
$j++;//当前截取的字符串的位置加1
$i++;//非汉字字符占一个字符的长度
}
}
$t = explode(" ",microtime());
$ttt = round($t[0],5);
//return $ttt-$tt;
return $str_temp;
}
if($_POST[sub]){
echo msubstr1($_POST[str],$_POST[str_start],$_POST[str_len]);
}
?>
</body>
</html>
评论 | 0 0

举报| 2012-06-04 14:15yangyze | 七级
用php的
string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] )

前提是php要安装 mb扩展


bobo熊的详细资料?
bobo熊是一个卡通形象,属于B&T原创的自有卡通形象品牌。关于bobo熊的详细资料并不多,但可以从相关的故事和商品中了解到一些信息。在故事中,bobo熊通常以一只可爱、善良、有些懒惰的熊的形象出现。它有着蓬松的毛发、圆圆的脸和大大的眼睛,看起来非常可爱。bobo熊喜欢做各种有趣的事情,但有时候也会...

tvst衣服好不好
质量还是挺好的 TVST香港原创品牌男装。

始于颜值,终于实力:我的佳能T80(图文原创)
比如,T-80的快门是很有特色的。刚按下去好像不是很灵敏,没有尼康相机特有的、干脆利落的、犹如快刀切乱麻的那种感觉(当然,就我的玩机经验而言,佳能相机的大部分机型,快门都是偏绵软的),当你开始怀疑是不是快门有问题时——可能也就是零点几秒的迟疑——快门被触发了:嘎!对,是“嘎”地一声,有点像发条玩具...

求一篇 仿写 沁园春 长沙 原创一篇吧 各位文科大神们 T^T
沁园春 中秋 玉露盈香,明月窥窗,桂影入屏。对清风华练,中秋如画,良宵仙眷,且纵杯倾。雅韵丝弦,佳音长伴,落落情怀笔墨凝。今相对,念高山美乐,异曲同声。翩然把袂同行,望一路风尘化雨生。有悠云蝶影,繁花似锦,满园春色,燕舞莺鸣。(回忆)美景宜人,风光无限,常记霓裳绕殿乘。流光老,...

不要再来伤害我原创是谁?原创是谁?
是,原创是郑智化的《flying like a bird》,两首歌的旋律一模一样。但是郑智化的歌是先出来的。

...又有哲理的小故事,要讲5分钟啊,好心人帮帮忙 T-T
幽默哲理小故事,要求原创,大约2~3分钟故事,附带一个哲理,急! 【一道终身受用的测试题】你开着一辆车。在一个暴风雨的晚上。你经过一个车站。有三个人正在焦急的等公共汽车。 一个是快要临死的老人,他需要马上去医院。一个是医生,他曾救过你的命,你做梦都想报答他。还有一个女人\/男人,她\/他是你做梦都想嫁...

T R Y是什么组合
艺名: T.R.Y 性别: 女 类型: 原创歌手 等级: 九州新人 出生: 1986年1月1日 位置: 广东 广州 身高:体重:星座:爱好:最得意的事情:最喜欢的歌星:喜欢的颜色:详细经历:T.R.Y 简介 T___中文名字:贡维特.英文名字:Tennie R___中文名字:王蕊.英文名字:Readis.Y___中文名字:陶钰玉...

tmagazine杂志地位
影响力和品牌价值等。1、影响力,TMagazine是时尚和文化领域的重要媒体之一,其内容和观点对于时尚和文化产业的发展和影响具有重要作用。2、质量,TMagazine的内容质量和编辑水平都非常高,每一期都会有大量的原创内容和深度报道,受到读者和业内人士的高度评价。3、品牌价值,TMagazine作为《纽约时报》旗下...

求原创400字英语演讲稿
If you can't be the sun be a star;It isn't by size that you win or you fail.Be the best of whatever you are!In the process of growing, there are both competition and cooperation. Have you ever thought that how to be the best of yourselves? In school life, some ...

家庭教师动画那几集是原创剧情?(就是漫画里没有的剧情)
目标27 进级祝いで寿司食って 庆祝升级的寿司大餐 前:原创;后:目标20(3卷)目标56 ごくでらのはなし 狱寺的回顾 原创(动画目标34-55的总集篇)目标71 気迫で胜负!绝対魔拳 用气势决胜负!绝对魔掌 原创+目标40(5卷)目标73 母さん感谢の日 母亲感谢之日 原创+目标55(7卷)目标84 ...

黄陂区17687061563: jsp中比如一条信息的标题是这样取得:${content.title}. 怎么截取前面20个字.
公政中孚: Jsp里面: &lt;c:choose&gt; &lt;c:when test="${signalList.SIGNALCOMMENTLESSORMORE eq 'less'}"&gt; &lt;td style="word-break: break-all;"&gt; ${signalList.SIGNALCOMMENT} &lt;/td&gt; &lt;/c:when&gt; &lt;c:when test="${signalList....

黄陂区17687061563: 调用数据库,取前几位,多余的用...表示
公政中孚: 简单点的:&lt;%response.write (left(rs("codes") ,9) &amp; "...") %&gt; 数字9表示取前9位.你可以根据自己需要改下. 复杂点的(会判断字符串是否大于9,大于才输出“...”): &lt;% dim str=rs("codes") if len(str)&gt;9 then response....

黄陂区17687061563: ASP网站,如何提取文章页的前50字作为Description标签?
公政中孚: 比如内容字段是 content 先消除 content的HTML代码 然后调用前50个字 response.write(left(stripHTML(content),50)) '消除HTMI代码 Function stripHTML(strHTML) 'Strips the HTML tags from strHTML Dim objRegExp, strOutput Set objRegExp = New...

黄陂区17687061563: asp 求正则表达式 取网站标题,关键词和描述
公政中孚: &lt;title&gt;(.*)&lt;\/title&gt; 空格是没有问题的,至于换行这些本来就不应该在title之间出现这样的格式,如果实在要这样做的话就用 fennng写的正则&lt;title&gt;([\s\S]*?)&lt;\/title&gt;.既然是采集信息,采集到后就应该先把采集到的内容中不必要...

黄陂区17687061563: 关于php怎么截取段落?
公政中孚: “.”默认不匹配换行符你试试这样截取正文 preg_match_all('/&lt;\/h2&gt;(.*?)\&lt;h2&gt;/is',$str,$p1); 【回复】我这里没有遇到这种问题呀( ⊙ o ⊙ )!,你是不是用word做的HTML文件与你的PHP文件的字符集(如GB2312、UTF-8)不同?

黄陂区17687061563: 求:left函数用法
公政中孚: 写一个函数,将字符值小于128的先过滤掉,这样剩下的就只有汉字(或双子节符号)了 然后用你的那个函数就可以了. 不过,汉字是双字节的,你的函数应该要取100才能得到50个汉字.

黄陂区17687061563: asp 文字超出部分用省略号 及 时间只取年月
公政中孚: 第一个问题可用以下函数实现,str是要处理的标题,strlen是要保留的长度,如&lt;%=gotTopic(rs("title"),12)%&gt; Function gotTopic(ByVal str, ByVal strlen) If str = "" Then gotTopic = "" Exit Function End If Dim l, t, c, i, strTemp str = ...

黄陂区17687061563: 求一个正则表达式.要求是在 <SPAN class=question - title>我的电脑</SPAN>中提取出“我的电脑”这几个字
公政中孚: 如果你确定需要截取的是中文的话 JS var reg = /[\u4e00-\u9fa5]+/; php $reg = '/[\x{4e00}-\x{9fa5}]+/u'; 如果中间部分是字母数字中文 JS var reg = /[\u4e00-\u9fa5\w]+(?=&lt;\/span&gt;)/i PHP $reg = '/(?&lt;=[&gt;])[\x{4e00}-\x{9fa5}\w]+(?=&lt;\/span)/i'

黄陂区17687061563: 用CSS样式截取字符串,多的用省略号表示
公政中孚: overflow:hidden;text-overflow:ellipsis;white-space:nowrap;eg:&lt;html&gt;&lt;head&gt;&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312" /&gt;&lt;title&gt;&lt;/title&gt;&lt;/head&gt;&lt;style type="text/css"&gt;div.test{width:...

黄陂区17687061563: 等差数列{an}的前项和为Sn,已知S9<0,S10>0,则数列的前n项和中,n是多少时取最小值
公政中孚: a(n)=a+(n-1)d, d&gt;0时,a(n)单调增, d&lt;0时,a(n)单调减. s(n)=na+n(n-1)d/2=n[a+(n-1)d/2]. a(n+1)=s(n+1)-s(n)=a+nd. 0&gt;s(9)=9[a+4d], 0&lt;s(10)=10[a+9d/2], 0&gt;a+4d, 0&lt; a+9d/2, d/2 &gt; a+4d+d/2 = a+9d/2 &gt; 0. d&gt;0.a(n)单调增. -9...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网