听燕十八 字符串函数

燕十八 公益PHP培训
课堂地址:YY频道88354001
学习社区:
www.zixue.it

                           字符串函数

<?php
    $str="hello";
 echo "hello".strlen($str)."字节";
 echo '<br/>';
 //中文在utf-8中站3个字节,在gbk中站2个字节
 $str2="中国";
 echo "中国".strlen($str2)."字节";

  echo '<br/>';
   //查找字符串位置的函数  strpos
   //当第二个参数是整型时,则理解为ascii字符编码
   //65->90   A-Z         97->122   a-z
   //第三个参数为偏移量
   $str="What You Name You";

   echo strpos($str,'You');//5个字节后找到了You

  echo '<br/>';
$newstring = 'abcdef abcdeaf';
echo $pos = strpos($newstring, 'a',1).'<br/>'; // $pos = 7, 不是 0


//查找子字符串出现的次数
echo '<hr/>';
function subsum($str,$sub){
 $sublen=strlen($sub);   //计算子字符串长度]
 $strlen=strlen($str); //计算父字符串的长度
 if($sublen>$strlen){
  return 0;
 }
  $offset=0;
  $num=0;
 while(($offset=strpos($str,$sub,$offset))!==false){
  $num+=1;                    //计数器找到则加1
  $offset+=$sublen;       //偏移量加子字符串,做为第三个参数继续找
 }
 return $num;            
}


$str="abcdef gabc aksdfsdfs abc sfaabc ";
echo subsum($str,'abc');
echo '<hr/>';

 $j = 1;
for ($i = 0; $i < 100; $i++){
$j= $j++;
//echo $j;
}
echo $j;

 


//str_replace函数 (字符串替换函数)
$str='您好,What is You Name';
echo $str.'<br/>';

$newstr=str_replace('您好','hello',$str);
echo $newstr.'<br/>';

//要想统计一下,替换的次数则
$newstr=str_replace('您好','hello',$str,$num);
echo '替换了'.$num.'次'.'<hr/>';

//如果要求,把您好换成hello,在把You换成you。
//可以先把,这两个字符串装到数组里在替换。
$search=array('您好','You');
$replace=array('hello','you');
$newstr=str_replace($search,$replace,$str);
echo $newstr.'<hr/>';

//还可以这样写分两次替换,你好替换了You在背替换了hello
$newstr=str_replace(array('您好','You'),array('hello','you'),$str);
echo $newstr.'<hr/>';

//转换指定字符  strtr是与单个字符对应来替换的
$str='hello world';
echo strtr($str,'o','w').'<hr>';

// 全角转半角.
 function make_semiangle($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);   
 }
 

 

//截取子字符串
//string substr(string $string,int $start[,int $length])
//$string:待截取的长字符串
// $start:截取开始的位置
//$length:正数代表截取的长度,负数代表截取的位置
$str='abcdefgh';
//当第三个参数,不指定时,截取到字符串的结尾
echo substr($str,3).'<br/>';   //跳过3个字符截取到结尾
//如果第二个参数是负数则从后面倒过来截取。
echo substr($str,-3).'<br/>';
//截取开头3个字符
echo substr($str,0,3).'<br/>';
//截取除头三位,和末尾3位中间字符串
echo substr($str,0,-3).'<br/>';

//截取中文应按字符编码所占的字节来截取但可能计算不好会出现乱码。
$str='钓鱼岛是中国的';
echo substr($str,0,6).'<hr>';

//strstr($str,$needle) 查找字符串的首次出现 返回该位置直到字符串结尾的部分。

$str='abc,def,hea';
echo strstr($str,',').'<br>';
//如何把第一次找到的$needle的位置 之前的字符串截取出来

echo strstr($str,'d',true).'<br>';

//把$needle最后一次出现的位置找出来,从该位置截取到末尾
//string strrchr ( string $haystack , mixed $needle )
// 查找指定字符在字符串中的最后一次出
echo strrchr($str,',').'<br>';

//计算一个文件的后缀
$file='demo3.php';
echo strrchr($file,'.').'<br/>';

 

//字符串 分割,反转,拼接
//array str_split ( string $string [, int $split_length = 1 ] ) 将字符串转换为数组

$str='abcdefg';
$arr=str_split($str);
print_r($arr);   //默认是一个字符一个单元
//如果截取到最后,剩下的字符串不够长度,就拿剩下的。
$arr=str_split($str,2);  //两个字符为一个单元
print_r($arr).'<br>';

//字符串和数组中有两个函数使用非常频繁
//implode,explode

$str='abc,中国,日本,英国';
$arr=explode(',',$str);  //根据指定的分割符,把字符串拆成数组
print_r($arr);
echo '<hr/>';
echo implode('.',$arr); //根据!讲数组单元连接成字符串
echo implode($arr).'<hr/>';

//chunk_split — 将字符串分割成小块

$str='123456789';
echo chunk_split($str,3,',').'<br>';  //每隔3个字符加,号

//字符转义函数  非常重要
//单双引号如果不小心,会引起数据库注入
$str="abc',hello";
echo $str;
//addslashes — 使用反斜线引用字符串
echo '<br/>';
echo addslashes($str);
echo '<br/>';
//反引用一个使用 addcslashes() 转义的字符串
echo stripslashes($str);
echo '<br/>';

//htmlspecialchars  将字符串中的一些字符,转换为html实体
$str='<ab>';
echo htmlspecialchars ($str).'<br>';
//htmlspecialchars_decode->实体转成符号

//二进制安全字符串比较
if(strcmp('D','a')>0){
 echo 'D&gt;a';
}else if(strcmp('D','a')<0){
 echo 'D &lt; a';
}else{
 echo '相等';
}

echo '<hr/>';
//大小写转换
$str='hello tHis is a coMputer';
echo strtolower($str).'<br/>'; //转成小写
echo strtoupper($str).'<br/>'; //转成大写
echo ucfirst($str).'<br/>'; //每个单词的首字母大写,其他不影响
echo ucfirst(strtolower($str)).'<br/>'; //每个单词的首字母大写,而且只有首字母大写

 

//防止数据库注入
//单双引号如果不小心,会引起数据库注入
$str="abc',hello";
echo $str;
//addslashes — 使用反斜线引用字符串

 

$str='abcdef';
//打印一个第一个字母
echo substr($str,0,1).'<br/>';

//字符串还有个类数组的特性。既可以把索引/下标,把指定的字符取出来
echo $str[0].'<hr/>';


//如何实现字符串反转
$str='abcde';
function rev($str){
 $len=-strlen($str);      //让它变成负数长度方便 substr截取
 for($new='',$start=-1;$start>=$len;$start--){
           $new.=substr($str,$start,1);
 }
 return $new;
}
echo rev($str).'<br/>';

echo strrev($str).'<br/>';        //系统反转函数


//获取文件后缀名。(5种)
function getext($file){
 return strrchr($file,'.');
}
$file='a.phap.asp';
echo getext($file).'<br/>';

//2.找最后一个.出现的位置。在substr截取
//用strrpos 找子字符最后一次出现的位置
function getext2($file){
 return substr($file,strrpos($file,'.'));
}
echo getext2($file).'<hr/>';
//先把字符串反过来,在找第一个出现的位置
function getext3($file){
 $file=strrev($file);   //先反转
 return strrev(substr($file,0,strpos($file,'.')));
}
echo getext3($file).'<br/>';

//用系统函数pathinfo 返回文件路径的信息
function  getext4($file){
 //$arr=pathinfo($file);
 //return $arr['extension'];
 return pathinfo($file,PATHINFO_EXTENSION);
}
echo getext4($file).'<br/>';

function getext5($file){
    $arr=explode('.',$file);  //转成数组
    return end($arr);    //讲数组转向最后一个单元
}
echo getext5($file).'<hr/>';


//把1234567转成1,234,567的形式
$num=1234567;
function stp($num){
 $arr= str_split(strrev($num),3);      //先反转在用逗号分隔.在转成数组。
 $str=implode(',',$arr);               //讲数组转为字符串用逗号隔开,此时顺序是倒的
 return strrev($str);                  // 在反转过来
}
//print_r(stp($num));
echo stp($num).'<hr/>';

function t1($num){
 $num=strrev($num);
 $num=strrev(chunk_split($num,3,','));  //每隔3个字符加,号在反转
    return ltrim($num,',');  //删除从字符串的开头,空格(或其他字符)

}
print_r(t1($num)).'<br/>'; 


//number_format   格式化字符串与千为单位即3为数
echo number_format($num);
?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值