//中文截取2,单字节截取模式
function cn_substr($str,$slen,$startdd=0){
$restr = “”;
$c = “”;
$str_len = strlen($str);
if($str_len < $startdd+1) return “”;
if($str_len < $startdd + $slen || $slen==0) $slen = $str_len – $startdd;
$enddd = $startdd + $slen – 1;
for($i=0;$i<$str_len;$i++)
{
if($startdd==0) $restr .= $c;
else if($i > $startdd) $restr .= $c;
转
此函数用于截取gb2312编码的中文字符串:
function MooCutstr($string, $length, $dot = ‘ …’) {
global $charset;
代码如下
if(ord($str[$i])>0x80){
if($str_len>$i+1) $c = $str[$i].$str[$i+1];
$i++;
}
else{ $c = $str[$i]; }
截取字符串专题:php截取字符串函数,php 字符串长度,php截取字符串前几位
代码如下
if(strlen($string) <= $length) {
return $string;
}
$string = str_replace(array(‘&’, ‘"’, ‘<‘, ‘>’),
array(‘&’, ‘”‘, ‘<‘, ‘>’), $string);
$strcut = ”;
if(strtolower($charset) == ‘utf-8’) {
$n = $tn = $noc = 0;
while($n < strlen($string)) {
$t = ord($string[$n]);
if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
$tn = 1; $n++; $noc++;
} elseif (194 <= $t && $t <= 223) {
$tn = 2; $n += 2; $noc += 2;
} elseif (224 <= $t && $t < 239) {
$tn = 3; $n += 3; $noc += 2;
} elseif (240 <= $t && $t <= 247) {
$tn = 4; $n += 4; $noc += 2;
} elseif (248 <= $t && $t <= 251) {
$tn = 5; $n += 5; $noc += 2;
} elseif ($t == 252 || $t == 253) {
$tn = 6; $n += 6; $noc += 2;
} else {
$n++;
}
if($noc >= $length) {
break;
}
}
if($noc > $length) {
$n -= $tn;
}
$strcut = substr($string, 0, $n);
} else {
for($i = 0; $i < $length; $i++) {
$strcut .= ord($string[$i]) > 127 ?
$string[$i].$string[++$i] : $string[$i];
}
}
$strcut = str_replace(array(‘&’, ‘”‘, ‘<‘, ‘>’), array(‘&’,
‘"’, ‘<‘, ‘>’), $strcut);
function mysubstr( $str, $length ){
$tagcnt = 0;
$charcnt = 0;
$tag = ”;
$maxlen = strlen( $str );
$resultstr = ”;
$tagstack = array();
if($i >= $enddd){
if(strlen($restr)+strlen($c)>$slen) break;
else{ $restr .= $c; break; }
}
}
return $restr;
}
function cn_midstr($str,$start,$len){
return cn_substr($str,$slen,$startdd);
}
PHP截取中文字符串(mb_substr)和获取中文
=>
<?php
// 说明:截取中文字符串
function mysubstr($str, $start, $len) {
$tmpstr = “”;
$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;
}
?>
return $strcut.$dot;
}
for( $i = 0; $i < $length; $i++ ){
if( $str[$i] == ‘<‘ ){
您可能感兴趣的文章:
- PHP中字符与字节的区别及字符串与字节转换示例
- 用PHP来计算某个目录大小的方法
- php计算一个文件大小的方法
- php计算整个mysql数据库大小的方法
- php使用递归计算文件夹大小
- php对文件夹进行相关操作(遍历、计算大小)
- php计算整个目录大小的方法
- php计算整个目录大小的方法
- vnsc威尼斯城官方网站,php strlen
mb_strlen计算中英文混排字符串长度 - PHP实现字节数Byte转换为KB、MB、GB、TB的方法
php 截取字符串第一个字符和最后一个字符
=>
Utf-8、gb2312都支持的汉字截取函数
$resultstr .= $str[$i];
php正则截取字符串 =>
截取utf-8字符串函数
for( $j=$i; $str[$j]!=’>’; $j++,$length++ ){
$tag .= $str[$j];
}
$tagcnt++;
$length++;
$tag .= ‘>’;
//如果是开始标记,则入栈,如果是与之相对应的结束标记则出栈
if( preg_match(‘/<([^/]+)?>/i’, $tag, $r) ){
echo ‘入栈:’,htmlspecialchars($r[1]),'<br />’;
array_push($tagstack, $r[1]);
}
elseif( preg_match(
‘/’.$tagstack[count($tagstack)-1].’/’, $tag ) ){
echo
‘出栈:’,htmlspecialchars($tagstack[count($tagstack)-1]),'<br
/>’;
array_pop( $tagstack );
}
php url字符串截取路径的文件名和扩展名
=>
为了支持多语言,数据库里的字符串可能保存为UTF-8编码,在网站开发中可能需要用php截取字符串的一部分。为了避免出现乱码现象,编写如下的UTF-8字符串截取函数
$tag = ”;
continue;
}
php最精确的字符串长度截取函数
=>
关于utf-8的原理请看 UTF-8 FAQ
$charcnt++;
$resultstr .= $str[$i];
}
PHP字符串分离、截取函数(explod)
=>
UTF-8编码的字符可能由1~3个字节组成,
具体数目可以由第一个字节判断出来。(理论上可能更长,但这里假设不超过3个字节)
第一个字节大于224的,它与它之后的2个字节一起组成一个UTF-8字符
第一个字节大于192小于224的,它与它之后的1个字节组成一个UTF-8字符
否则第一个字节本身就是一个英文字符(包括数字和一小部分标点符号)。
echo ‘<hr size=1>最后结果为:’;
PHP 截取字符串函数整理
=>
代码如下
//栈是空的直接返回
if(empty($tagstack)){
return $resultstr;
}
//否则去掉没有结束标记的开始标记
else{
while(!empty($tagstack)){
PHP截取中文字符串的问题
=>
<?php
// 说明:Utf-8、gb2312都支持的汉字截取函数
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8
开始长度默认为 0
*/
function cut_str($string, $sublen, $start = 0, $code = ‘UTF-8’)
{
if($code == ‘UTF-8’)
{
$pa =
“/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/”;
preg_match_all($pa, $string, $t_string);
if(count($t_string[0]) – $start > $sublen) return join(”,
array_slice($t_string[0], $start, $sublen)).”…”;
return join(”, array_slice($t_string[0], $start,
$sublen));
}
else
{
$start = $start*2;
$sublen = $sublen*2;
$strlen = strlen($string);
$tmpstr = ”;
for($i=0; $i<$strlen; $i++)
{
if($i>=$start && $i<($start+$sublen))
{
if(ord(substr($string, $i, 1))>129)
{
$tmpstr.= substr($string, $i, 2);
}
else
{
$tmpstr.= substr($string, $i, 1);
}
}
if(ord(substr($string, $i, 1))>129) $i++;
}
if(strlen($tmpstr)<$strlen ) $tmpstr.= “…”;
return $tmpstr;
}
}
$str = “abcd需要截取的字符串”;
echo cut_str($str, 8, 0, ‘gb2312’);
?>
$tag = array_pop($tagstack);
php按字符截取中文并保证无乱码的方法
=>
注意明:
$index = strrpos($resultstr, $tag);
php不破坏单词截取子字符串
=>
代码如下
for($i = $index-1; $resultstr[$i] != ‘>’; $i++ ){
$resultstr[$i] = ”;
}
PHP截取GB2312中文字符串
=>
function utf8Substr($str, $from, $len)
{
return
preg_replace(‘#^(?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$from.’}’.
‘((?:[x00-x7F]|[xC0-xFF][x80-xBF]+){0,’.$len.’}).*#s’,
‘$1’,$str);
}
$resultstr[$i++] = ”;
}
PHP 截取中文长度 函数
=>
可单独截取uft8字符串哦。
return $resultstr;
}
}
php中文汉字截取函数 =>
程序说明:
$sttime = microtime(true);
PHP截取左起或右起的指定字符串个数
=>
-
len 参数以中文字符为标准,1len等于2个英文字符,为了形式上好看些
-
如果将magic参数设为false,则中文和英文同等看待,取绝对的字符数
-
特别适用于用htmlspecialchars()进行过编码的字符串
-
能正确处理GB2312中实体字符模式()
$stmem = memory_get_usage();
php截取指定字符之前的字符串
=>
程序代码:
$str =
“a1<body>b2<p>c3<em>d4</em>e5</p>f6</body>g7h8”;
php截取字符串后几位
=>
代码如下
echo ‘处理结果为:<br/><hr size=1>’,htmlspecialchars(
mysubstr( $str, 18 ) ),'<br />’;
PHP截取中文字符串方法总结
=>
function FSubstr($title,$start,$len=””,$magic=true)
{
/**
* powered by Smartpig
* mailto:d.einstein@263.net
*/
echo “内存使用情况:”,(memory_get_usage()-$stmem),'<br />’;
php如何清除html格式并去除文字中的空格
=>
$length = 0;
if($len == “”) $len = strlen($title);
echo “算法运行时间(microtime):”,(microtime(true)-$sttime),'<br/>’;
PHP用substr函数截取字符串中的某部分
=>
//判断起始为不正确位置
if($start > 0)
{
$cnum = 0;
for($i=0;$i<$start;$i++)
{
if(ord(substr($title,$i,1)) >= 128) $cnum ++;
}
if($cnum%2 != 0) $start–;
//方法二
php 字符串截取函数 =>
unset($cnum);
}
/
php字符串截取问题 =>
if(strlen($title)<=$len) return substr($title,$start,$len);
代码如下
php按照指定长度截取字符串的代码
=>
$alen = 0;
$blen = 0;
**
* 函数名 html_substr
* 功能 从html串中截取指定长度的字串,html标记不计算在内
* 参数
* $str 要截取的串
* $len 要截取的长度
* $mode 不匹配的标记的处理方式 0 删去(默认),1 补齐
* 返回 截取到的串
* 说明
* 未考虑多字节字符,仅已字节做计数单位
* 未考虑可单独存在的标记
**/
function html_substr($str, $len, $mode=0) {
$ar= preg_split(‘/(<!–.*–>|<[^>]*>)/s’, $str,
-1, preg_split_delim_capture);
foreach($ar as $k => $v) {
if($v{0} != ‘<‘) {
$len = $len – strlen($v);
if($len < 0) $ar[$k] = substr($v, 0, $len);
}else $ar[$k] = strtolower($v);
if($len <= 0) break;
}
$ar = array_slice($ar, 0, $k+1);
$len = count($ar);
foreach($ar as $k=>$v) {
if($v{0} == ‘<‘ && $v[1] != ‘/’) {
$ch = str_replace(‘<‘, ‘</’, $v);
for($i=$k+1; $i<$len && $ar[$i]!=$ch; $i++);
if($i == $len)
if($mode)
$ar[$len] = $ch . $ar[$len];
else
$ar[$k] = ”;
}
}
return join(”, $ar);
}
$str = “123<em>abc</em>456<em>def</em>789”;
php按单词截取字符串的代码
=>
$realnum = 0;
echo ‘<xmp>’;
echo html_substr($str, 5) . php_eol;
echo html_substr($str, 5, 1);
PHPCMS字符串截取 =>
for($i=$start;$i<strlen($title);$i++)
{
$ctype = 0;
$cstep = 0;
$cur = substr($title,$i,1);
if($cur == “&”)
{
if(substr($title,$i,4) == “<“)
{
$cstep = 4;
$length += 4;
$i += 3;
$realnum ++;
if($magic)
{
$alen ++;
}
}
else if(substr($title,$i,4) == “>”)
{
$cstep = 4;
$length += 4;
$i += 3;
$realnum ++;
if($magic)
{
$alen ++;
}
}
else if(substr($title,$i,5) == “&”)
{
$cstep = 5;
$length += 5;
$i += 4;
$realnum ++;
if($magic)
{
$alen ++;
}
}
else if(substr($title,$i,6) == “””)
{
$cstep = 6;
$length += 6;
$i += 5;
$realnum ++;
if($magic)
{
$alen ++;
}
}
else if(substr($title,$i,6) == “‘”)
{
$cstep = 6;
$length += 6;
$i += 5;
$realnum ++;
if($magic)
{
$alen ++;
}
}
else if(preg_match(“/&#(d+);/i”,substr($title,$i,8),$match))
{
$cstep = strlen($match[0]);
$length += strlen($match[0]);
$i += strlen($match[0])-1;
$realnum ++;
if($magic)
{
$blen ++;
$ctype = 1;
}
}
}else{
if(ord($cur)>=128)
{
$cstep = 2;
$length += 2;
$i += 1;
$realnum ++;
if($magic)
{
$blen ++;
$ctype = 1;
}
}else{
$cstep = 1;
$length +=1;
$realnum ++;
if($magic)
{
$alen++;
}
}
}
PHP中文字符串截取函数 支持gb2312,gbk,big
=>
if($magic)
{
if(($blen*2+$alen) == ($len*2)) break;
if(($blen*2+$alen) == ($len*2+1))
{
if($ctype == 1)
{
$length -= $cstep;
break;
}else{
break;
}
}
}else{
if($realnum == $len) break;
}
}
PHP截取汉字乱码问题解决方法
=>
unset($cur);
unset($alen);
unset($blen);
unset($realnum);
unset($ctype);
unset($cstep);
//方法三
php字符串截取的简单方法
=>
return substr($title,$start,$length);
}
php截取字符串前几位
=>
代码如下
利用php截取字符去掉最后一个字符
=>
$str =
“a1<body>b2c3<p><em>d4</em>e</p>5f6</body>g7h8”;
$gn = 7;
$i = $j = $k = 0;
while( ($c = $str[$i++]) && $j < $gn )
{
if( $c == ‘<‘)
{
$tag = 1;
}
elseif($c == ‘>’)
{
if(trim($tg,’/’) == ’em’)
{
$tgs[$j-1] = ‘<‘.$tg.’>’;
}
else
{
if($tgs[$j-1]) $ogs[$j-1] = ‘1|’.'<‘.$tg.’>’;
else $ogs[$j-1] = ‘0|’.'<‘.$tg.’>’;
}
$tag = 0;
$tg = ”;
}
elseif($tag == 1)
{
$tg .= $c;
}
else
{
$tmp[] = $c;
$j++;
}
}
$ts = count($tgs);
if($ts % 2) array_pop($tgs);
foreach($tmp as $k=>$v)
{
$ba = explode(‘|’,$ogs[$k],2);
if( $tgs[$k] && $ogs[$k])
{
if($ba[0])
{
$s .= $v.$tgs[$k].$ba[1];
}
else $s .= $v.$ba[1].$tgs[$k];
}
else $s .= $v.$tgs[$k].$ba[1];
}
php防止截取中文字符串乱码的函数
=>
echo htmlspecialchars($s);
php截取字符串函数(不打断单词)的方法
=>
php中计算中文字符串长度、截取中文字符
=>
php 截取指定字符之前的字符串
=>
php字符串截取(这个是emlog里提出来的,其实
=>
php实现截取URL地址中的主域名
=>
支持多编码字符串截取php函数
=>
PHP:UTF-8、GB2312都支持的汉字截取函数
=>
php截取编码为utf8的字符串
=>
四个php中文字符串截取函数
=>