代码如下
分类:热门新闻

php支付递归函数,递归函数正是调用自个儿自个儿,这几个函数非常适用于浏览动态数据构造,譬如树和列表。大概未有web应用程序供给接纳复杂的数据架构?phpfunction reversr_r($str){ if (strlen($str)0) reverse_r(substr($str,1)); echo substr($str,0,1); return;}??phpfunction reverse_i($str卡塔尔(قطر‎{ for($i=1;$i=strlen($strState of Qatar;$i++卡塔尔(قطر‎ { echo substr($str,-$i,1State of Qatar;}}这些程序项目清单中实现四个函数,那七个函数都得以相反的依次打字与印刷字符串的剧情函数reversr_r是通过递归完毕的,而函数reverse_i(卡塔尔国是经过巡回落成的

strlen()

PHP strlen() 函数

概念和用法

strlen(卡塔尔 函数再次回到字符串的长短。

语法

strlen(string)

参数:string
陈述:必得。规定要检查的字符串。

 代码如下

<?php
$str=‘中文a字1符‘;
echo strlen($str);
echo ‘<br />‘;
echo mb_strlen($str,‘UTF8‘);
//输出结果
//14
//6
?>

结果分析:在strlen总计时,对待叁个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14
在mb_strlen总结时,选定内码为UTF8,则会将叁个华语字符充任长度1来总括,所以“普通话a字1符”长度是6

mb_strlen()函数

内需留意的是,mb_strlen并非PHP大旨函数,使用前须求保证在php.ini中加载了php_mbstring.dll,即确保

“extension=php_mbstring.dll”这一行存在而且未有被疏解掉,不然会冒出未定义函 数的问题。

 代码如下

<?php
$str=‘中文a字1符‘;
//总结如下
echo (strlen($str) + mb_strlen($str,‘UTF8‘)) / 2;
echo
//输出结果
//10
?>

“中文a字1符” 的strlen($str)值是14,mb_strlen($str卡塔尔国值是6,则足以测算出“中文a字1符”的占位是10.

授课这两个之间的区分

 代码如下

<?php

//测验时文件的编码方式即便UTF8

$str='中文a字1符';

echo strlen($str).'<br>';//14

echo mb_strlen($str,'utf8').'<br>';//6

echo mb_strlen($str,'gbk').'<br>';//8

echo mb_strlen($str,'gb2312').'<br>';//10

?> 

结果解析:在strlen计算时,对待叁个UTF8的粤语字符是3个长度,所以“普通话a字1符”长度是3*4+2=14,在mb_strlen

计量时,选定内码为UTF8,则会将八个华语字符当做长度1来总计,所以“普通话a字1符”长度是6 .

即便上边函数能够总结化解一些中乌Crane语混合难点,可是无法用于实实际中,上面作者来给各位朋友介绍任何比较好的办

法。

PHP获取中国和德国文混合字符串长度的兑现代码如下,1汉语=1位,2俄语=1位,可活动改正

 代码如下

/**
* PHP获取字符串中克罗地亚共和国语混合长度
* @param $str string 字符串
* @param $$charset string 编码
* @return 重临长度,1普通话=1位,2希腊语=1位
*/
function strLength($str,$charset='utf-8'){
if($charset=='utf-8') $str = iconv('utf-8','gb2312',$str);
$num = strlen($str);
$cnNum = 0;
for($i=0;$i<$num;$i++){
if(ord(substr($str,$i+1,1))>127){
$cnNum++;
$i++;
}
}
$enNum = $num-($cnNum*2);
$number = ($enNum/2)+$cnNum;
return ceil($number);
}

//测量试验输出长度都为15
$str1 = '测量检验测量检验测验测验测量试验测量检验测验测';
$str2 = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
$str3 = 'aa测试aa测试aa测试aa测试aaaaaa';
echo strLength($str1,'gb2312');
echo strLength($str2,'gb2312');
echo strLength($str3,'gb2312');

截取字符串函数

UTF8编码,在UTF第88中学,四个中文字符占3个字节

 代码如下

function msubstr($str, $start, $len) {
 $tmpstr = "";
 $strlen = $start + $len;
 for($i = 0; $i < $strlen; $i++){
  if(ord(substr($str, $i, 1)) > 127){
   $tmpstr.=substr($str, $i, 3);
   $i+=2;
  }else
   $tmpstr.= substr($str, $i, 1);
 }
 return $tmpstr;
}
echo msubstr("一二四天下致公english",0,10卡塔尔(قطر‎;

GB2312编码,在gb2312中,三个粤语字符占2个字节

 代码如下

<?php
function msubstr($str, $start, $len) {   //ȡ
   $tmpstr = "";
   $strlen = $start + $len;
   if(preg_match('/[/d/s]{2,}/',$str)){$strlen=$strlen-2;}
   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;
 }
 
?>

编码宽容性卓绝的函数

 代码如下

function cc_msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true)
{
 if(function_exists("mb_substr"))
  return mb_substr($str, $start, $length, $charset);
 elseif(function_exists('iconv_substr')) {
  return iconv_substr($str,$start,$length,$charset);
 }
 $re['utf-8']   = "/[/x01-/x7f]|[/xc2-/xdf][/x80-/xbf]|[/xe0-/xef][/x80-/xbf]{2}|[/xf0-/xff]

[/x80-/xbf]{3}/";
 $re['gb2312'] = "/[/x01-/x7f]|[/xb0-/xf7][/xa0-/xfe]/";
 $re['gbk']   = "/[/x01-/x7f]|[/x81-/xfe][/x40-/xfe]/";
 $re['big5']   = "/[/x01-/x7f]|[/x81-/xfe]([/x40-/x7e]|/xa1-/xfe])/";
 preg_match_all($re[$charset], $str, $match);
 $slice = join("",array_slice($match[0], $start, $length));
 if($suffix) return $slice."…";
 return $slice;
}

本文由威尼斯在线注册平台发布于热门新闻,转载请注明出处: 代码如下

上一篇:【威尼斯登录首页】这里就实现了守护进程化,代码实现了一个简单的多进程管理机制 下一篇:没有了
猜你喜欢
热门排行
精彩图文