PHP基础之字符串(5)

strlen (string)

计算字符串的长度

strpos (string,find,start)

函数查找字符串在另一字符串中第一次出现的位置(区分大小写)
如果在字符串中找到匹配,该函数会返回第一个匹配的位置.
如果未找到匹配,则返回 FALSE.

  • string: 规定被搜索的字符串
  • find:规定要查找的字符串
  • start:规定开始搜索的位置

strrpos (string,find,start)

查找字符串在另一字符串中最后一次出现的位置(区分大小写)

strripos (string,find,start)

查找字符串在另一字符串中最后一次出现的位置(不区分大小写)

stripos (string,find,start)

查找字符串在另一字符串中第一次出现的位置(不区分大小写)。

addcslashes (string,characters)

向字符串中的特定字符前添加反斜杠
向字符串中的一个范围内的字符前添加反斜杠
在指定的预定义字符前添加反斜杠。区分大小写

  • string: 规定要转义的字符串
  • characters:规定要转义的字符或字符范围。
$str = 'hello world!';
// 向指定的字符‘l’之前添加反斜杠
echo addcslashes($str,'l'); // he\l\lo wor\ld!

// 向指定的范围内的字符前添加反斜杠
$str = "Hello, my name is John Adams.";
echo $str;
echo "<br />";
echo addcslashes($str,'A..Z');
echo "<br />";
echo addcslashes($str,'a..z');
echo "<br />";
echo addcslashes($str,'a..h');

特定的预定义字符有:

在 PHP 中,\0、\r、\n、\t、\f 和 \v 是预定义的转义序列。

  • 单引号 (’)
  • 双引号 (")
  • 反斜杠 ()
  • 0(NULL)
  • r (回车)
  • n (换行)
  • t (换夜)
  • f (制表符)
  • v (垂直制表符)
$str = "Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";

chunk_split (string,length,end)

chunk_split() 函数把字符串分割为一连串更小的部分。

  • string: 规定要分割的字符串
  • length:一个数字,定义字符串块的长度。默认为 76。从1开始计算位置
  • end: 一个字符串,定义在每个字符串块之后放置的内容。默认为 \r\n。
$str = 'I have a dream.';
echo chunk_split($str,2,','); // I ,ha,ve, a, d,re,am,.,

substr (string,start,length)

返回字符串的一部分。

  • string: 要被截取的字符串
  • start:规定开始截取的位置
  • length:可选。规定要返回的字符串长度。默认是直到字符串的结尾。

str_replace (find,replace,string,count)

使用一个字符串替换字符串中的另一些字符

  • find:规定要查找的值
  • replace: 用此替换查找到的值
  • string: 规定被搜索的字符串。
  • count: 可选,一个变量,对替换数进行计数。
  • 返回值:返回带有替换值的字符串或数组

随机生成字符串

function generateRandomString($length = 5) {
	$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; 
	$randomString = '';
	for ($i = 0; $i < $length; $i++) {
		//rand() 函数返回随机整数。
		$randomString .= $characters[rand(0, strlen($characters) - 1)];
	}
	return $randomString; 
}
echo generateRandomString(4);

汉字截取函数

utf-8、gb2312都支持的汉字截取函数。
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 utf-8 ,开始长度默认为 0

function cutStr($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 = "jQuery插件实现的加载图片和页面效果";
echo cutStr($str,16);

字符串截取,支持中文和其他编码

/**
*字符串截取,支持中文和其他编码
*@param[string]$str[字符串]
*@param integer$start[起始位置]
*@param integer$length[截取长度]
*@param string$charset[字符串编码]
*@param boolean$suffix[是否有省略号]
*@return[type][description]
*/
function msubstr($str,$start=0,$length=15,$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;
}
$str = '明天会更好你相信的撒覆盖率很高了嘎是';
echo msubstr($str,0,10,$charset="utf-8",$suffix=true);
echo "<br />";

实现js的escape函数

/**
*php实现js escape函数
*@param[type]$string[description]
*@param string$encoding[description]
*@return[type][description]
*/
function escape($string,$encoding='UTF-8'){
  $return=null;
  for($x=0;$x<mb_strlen($string,$encoding);$x++){
    $str=mb_substr($string,$x,1,$encoding);
    if(strlen($str)>1){//多字节字符
      $return.="%u".strtoupper(bin2hex(mb_convert_encoding($str,'UCS-2',$encoding)));
    }else{
      $return.="%".strtoupper(bin2hex($str));
    }
  }
  return $return;
}
echo escape('hello,world',$encoding='UTF-8');

实现js的unescape函数

/**
*php实现js unescape函数
*@param[type]$str[description]
*@return[type][description]
*/
function unescape($str){
  $str=rawurldecode($str);
  preg_match_all("/(?:%u.{4})|.{4};|&#\d+;|.+/U",$str,$r);
  $ar=$r[0];
  foreach($ar as$k=>$v){
    if(substr($v,0,2)=="%u"){
      $ar[$k]=iconv("UCS-2","utf-8//IGNORE",pack("H4",substr($v,-4)));
    }elseif(substr($v,0,3)==""){
      $ar[$k]=iconv("UCS-2","utf-8",pack("H4",substr($v,3,-1)));
    }elseif(substr($v,0,2)=="&#"){
      echo substr($v,2,-1)."";
      $ar[$k]=iconv("UCS-2","utf-8",pack("n",substr($v,2,-1)));
    }
  }
  return join("",$ar);
}

数字转人名币

/**
*数字转人名币
*@param[type]$num[description]
*@return[type][description]
*/
function num2rmb($num){
  $c1="零壹贰叁肆伍陆柒捌玖";
  $c2="分角元拾佰仟万拾佰仟亿";
  $num=round($num,2);
  $num=$num*100;
  if(strlen($num)>10){
    return"oh,sorry,the number is too long!";
  }
  $i=0;
  $c="";
  while(1){
    if($i==0){
      $n=substr($num,strlen($num)-1,1);
    }else{
      $n=$num%10;
    }
    $p1=substr($c1,3*$n,3);
    $p2=substr($c2,3*$i,3);
    if($n!='0'||($n=='0'&&($p2=='亿'||$p2=='万'||$p2=='元'))){
      $c=$p1.$p2.$c;
    }else{
      $c=$p1.$c;
    }
    $i=$i+1;
    $num=$num/10;
    $num=(int)$num;

    if($num==0){
      break;
    }
  }

  $j=0;
  $slen=strlen($c);
  while($j<$slen){
    $m=substr($c,$j,6);
    if($m=='零元'||$m=='零万'||$m=='零亿'||$m=='零零'){
      $left=substr($c,0,$j);
      $right=substr($c,$j+3);
      $c=$left.$right;
      $j=$j-3;
      $slen=$slen-3;
    }
    $j=$j+3;
  }
  if(substr($c,strlen($c)-3,3)=='零'){
    $c=substr($c,0,strlen($c)-3);
  }//if there is a'0'on the end,chop it out
  return$c."整";
}
echo num2rmb(5);

转换字符串中特定的字符

/**
*特殊的字符
*@param[type]$str[description]
*@return[type][description]
*/
function makeSemiangle($str){
$arr=array(
'0'=>'0','1'=>'1','2'=>'2','3'=>'3','4'=>'4',
'5'=>'5','6'=>'6','7'=>'7','8'=>'8','9'=>'9',
'A'=>'A','B'=>'B','C'=>'C','D'=>'D','E'=>'E',
'F'=>'F','G'=>'G','H'=>'H','I'=>'I','J'=>'J',
'K'=>'K','L'=>'L','M'=>'M','N'=>'N','O'=>'O',
'P'=>'P','Q'=>'Q','R'=>'R','S'=>'S','T'=>'T',
'U'=>'U','V'=>'V','W'=>'W','X'=>'X','Y'=>'Y',
'Z'=>'Z','a'=>'a','b'=>'b','c'=>'c','d'=>'d',
'e'=>'e','f'=>'f','g'=>'g','h'=>'h','i'=>'i',
'j'=>'j','k'=>'k','l'=>'l','m'=>'m','n'=>'n',
'o'=>'o','p'=>'p','q'=>'q','r'=>'r','s'=>'s',
't'=>'t','u'=>'u','v'=>'v','w'=>'w','x'=>'x',
'y'=>'y','z'=>'z',
'('=>'(',')'=>')','〔'=>'[','〕'=>']','【'=>'[',
'】'=>']','〖'=>'[','〗'=>']','{'=>'{','}'=>'}','《'=>'<',
'》'=>'>',
'%'=>'%','+'=>'+','—'=>'-','-'=>'-','~'=>'-',
':'=>':','。'=>'.','、'=>',',','=>'.','、'=>'.',
';'=>';','?'=>'?','!'=>'!','…'=>'-','‖'=>'|',
'”'=>'"','“'=>'"','\''=>'`','‘'=>'`','|'=>'|','〃'=>'"',
''=>'','.'=>'.');
return strtr($str,$arr);
}

下载

/**
*下载
*@param[type]$filename[description]
*@param string$dir[description]
*@return[type][description]
*/
function downloads($filename,$dir='./'){
  $filepath=$dir.$filename;
  if(!file_exists($filepath)){
    header("Content-type:text/html;charset=utf-8");
    echo"File not found!";
    exit;
  }else{
    $file=fopen($filepath,"r");
    Header("Content-type:application/octet-stream");
    Header("Accept-Ranges:bytes");
    Header("Accept-Length:".filesize($filepath));
    Header("Content-Disposition:attachment;filename=".$filename);
    echo fread($file,filesize($filepath));
    fclose($file);
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值