php 字符串使用总结

1、确定字符串长度

在php中使用strlen函数和mb_strlen函数,后者需要开启mbstring扩展

<?php
header('content-type:text/html;charset=utf-8');
$str = 'abcdef';
echo strlen($str); // 6

$str = ' ab cd ';
echo mb_strlen($str); // 7

//strlen 是计算字符串"字节"长度
//mb_strlen,是根据编码,计算字符串的"字符"个数.

$str='中华人民共和国';
//在 UTF-8编码下,一个汉字占3个字节 在gbk中一个汉字占2个字节
echo "字节长度是".strlen($str);//字节长度是21

echo "字符长度是".mb_strlen($str,'utf-8');//字符长度是7

2、字符串剔除和填充

<?php
//剔除
$str = '  i am a student   ';
//剔除字符串两端空格
var_dump(trim($str));//'i am a student'
//剔除字符串尾部空格
var_dump(rtrim($str));//'  i am a student'
//剔除字符串首部空格
var_dump(ltrim($str));//'i am a student   '

//可以通过指定参数,实现更高级功能
var_dump(trim(',1,2,3,4,',','));//1,2,3,4
var_dump(rtrim(',1,2,3,4,',','));//,1,2,3,4
var_dump(ltrim(',1,2,3,4,',','));//1,2,3,4,

//填充
//每隔3位填充‘,’
var_dump(chunk_split('12345678',3,','));//123,456,78,
//尾部填充,如果字符串小于填充位置,则以空格补齐,如果大于填充位置,则尾部追加
var_dump(str_pad('apple', 6)."is good.");//apple is good.
var_dump(str_pad('apple123', 6)."is good.");//apple123is good.
var_dump(str_pad('app', 6)."is good.");//app   is good.

3、字符串转换

<?php
$str = 'i Am a student';
//小写
var_dump(strtolower($str));//i am a student
//大写
var_dump(strtoupper($str));//I AM A STUDENT
//首字母大写
var_dump(ucfirst($str));//I Am a student
//首字母小写
var_dump(lcfirst($str));//i Am a student
每个单词首字母大写
var_dump(ucwords($str));//I Am A Student


4、字符串比较
<?php
//字符串通过==,===,!=,!== 比较
var_dump(22 == '22');//true
var_dump(22 === '222');//false

var_dump(22 != '22');//false
var_dump(22 !== '222');//true

//但是以上比较重,可能会出现很多意外
var_dump(0 == '你好');//true
var_dump(1 == '1哈哈');//true
var_dump(1 == '哈哈');//false

因此,php 字符串库函数中提供了对字符串的比较函数,它们的返回值定义为:

1):如果前者大于后者,返回大于0的数
2):如果前者小于后者,返回小于0的数
3):如果前者等于后者,返回0
<?php
$a = 'abbc';
$b = 'aBw';

//区分大小写比较
var_dump(strcmp($a, $b));//1,表示前者大于后者

//不区分大小写比较
var_dump(strcasecmp($a, $b));//-21,表示前者小于于后者

//区分大小写比较,从第三个参数给定比较长度
var_dump(strncmp($a, $b, 3));//1,表示前者大于后者

//不区分大小写比较,从第三个参数给定位比较长度
var_dump(strncasecmp($a, $b, 3));//-21,表示前者小于于后者


5、字符串分割连接翻转

<?php
$str = "Hi lvfk";

//默认一个一个进行拆分
$arr1 = str_split($str);
print_r($arr1);
//Array ( [0] => H [1] => i [2] => [3] => l [4] => v [5] => f [6] => k )

//每隔3个字符拆分
$arr2 = str_split($str, 3);
print_r($arr2);
// Array ( [0] => Hi [1] => lvf [2] => k )

$str = 'abc,中国,香港,台湾';
// explode,是根据指定的分割符,把字符串拆成数组.
$arr = explode(',',$str);
print_r($arr);
//Array ( [0] => abc [1] => 中国 [2] => 香港 [3] => 台湾 )

// implode,是根据指定的连接符,把数组再拼接成字符串,也可以使用join
$arr = explode(',',$str);
echo implode('~',$arr),'<br />';//abc~中国~香港~台湾
// 你可以只传一个数组做参数,不指定连接符,
// 这样,将把数组单元直接拼接起来
echo implode($arr);//abc中国香港台湾

<?php
$str = "Hello fri3nd, HI, HI,hi,you're looking good today!";

//字符串翻转
var_dump(strrev($str));//!yadot doog gnikool er'uoy,ih,IH ,IH ,dn3irf olleH


6、统计单词
<?php
$str = "Hello fri3nd, you're looking good today!";

print_r(str_word_count($str, 1));
//Array ( [0] => Hello [1] => fri [2] => nd [3] => you're [4] => looking [5] => good [6] => today )

7、查找

<?php
$str = "Hello fri3nd, HI, HI,you're looking good today!";

//strstr & stristr 查找,并返回查找成功位置后的所有字符串
//strstr区分大小写
var_dump(strstr($str, 'y'));//you're looking good today!
var_dump(strstr($str, 'A'));//false,此处查找失败

//stristr忽略大小写查找
var_dump(stristr($str, 'A'));//ay!

//strpos & stripos 查找位置,并返回查找成功的位置
//strpos区分大小写
var_dump(strpos($str, 'you'));//23
var_dump(strpos($str, 'hi'));//false,此处查找失败

//stripos不区分大小写
var_dump(stripos($str, 'HI'));//14

//strrpos 最后一次出现位置
var_dump(strrpos($str, 'HI'));//18

//strripos 最后一次出现位置,不区分大小写
var_dump(strripos($str, 'HI'));//18

8、字符串替换
<?php
$str = "Hello fri3nd, HI, HI,you're looking good today!";

//str_replace,替换,大小写敏感
var_dump(str_replace('hi', '#', $str));//Hello fri3nd, HI, HI,you're looking good today!
var_dump(str_replace('HI', '#', $str));//Hello fri3nd, #, #,you're looking good today!

//sub_replace 指定位置开始替换
//从字符串$str,第二个位置开始替换,并替换全部
var_dump(substr_replace($str, '#', 2));//He#
//从字符串$str,第二个位置开始替换,并且只替换2个字符
var_dump(substr_replace($str, '#', 2,2));//He#o fri3nd, HI, HI,you're looking good today!


9、字符串截取,substr,

substr_count,substr_compare,substr_replace
<?php
$str = "Hello fri3nd, HI, HI,hi,you're looking good today!";

//截取
var_dump(substr($str,0,5));//Hello
var_dump(substr($str,5));// fri3nd, HI, HI,hi,you're looking good today!

//统计出现次数,大小写敏感
var_dump(substr_count($str, 'HI'));//2

//针对中文截取,可以使用mb_substr
var_dump(mb_substr('你好,中国', 0,2));

//substr_compare() 函数从指定的开始位置比较两个字符串。
echo substr_compare("abcde", "bc", 1, 2); // 0
echo substr_compare("abcde", "de", -2, 2); // 0
echo substr_compare("abcde", "bcg", 1, 2); // 0
echo substr_compare("abcde", "BC", 1, 2, true); // 0
echo substr_compare("abcde", "bc", 1, 3); // 1
echo substr_compare("abcde", "cd", 1, 2); // -1
echo substr_compare("abcde", "abc", 5, 1); // warning

//substr_replace() 函数把字符串的一部分替换为另一个字符串。
$var = 'ABCDEFGH:/MNRPQR/';
echo "Original: $var<hr />\n";

/* These two examples replace all of $var with 'bob'. */
echo substr_replace($var, 'bob', 0) . "<br />\n";
echo substr_replace($var, 'bob', 0, strlen($var)) . "<br />\n";

/* Insert 'bob' right at the beginning of $var. */
echo substr_replace($var, 'bob', 0, 0) . "<br />\n";

/* These next two replace 'MNRPQR' in $var with 'bob'. */
echo substr_replace($var, 'bob', 10, -1) . "<br />\n";
echo substr_replace($var, 'bob', -7, -1) . "<br />\n";

/* Delete 'MNRPQR' from $var. */
echo substr_replace($var, '', 10, -1) . "<br />\n";


10、其他常用字符串函数

<?php
//ip字符串和长整型之间转换
var_dump(ip2long('127.0.0.1'));//2130706433
var_dump(long2ip(2130706433));//127.0.0.1

//md5:将一个字符串进行MD5算法加密
var_dump(md5('123'));//202cb962ac59075b964b07152d234b70

//md5_file — 将一个文件进行MD5算法加密
var_dump(md5(__FILE__));//a544327e3f2d2bd40ed09eb00ef90338

//bin2hex - 将二进制数据转换成十六进制表示
var_dump(bin2hex('a'));//61

//nl2br — 将字符串中的换行符“\n”替换成“<br/>”
var_dump(nl2br("hi \n nih"));//hi <br />nih

11、应用:多种方式获取路径后缀

<?php
$url="http://localhost/user/order.php";
function get_ext1($url){
    return substr(strrchr($url,"."),1);
}
function get_ext2($url){
    $p=pathinfo($url);//Array ( [dirname] => http://localhost/user [basename] => order.php [extension] => php [filename] => order )
    return $p['extension'];
}
function get_ext3($url){
    return substr($url,strrpos($url,'.')+1);
}
function get_ext4($url){
    $arr=explode('.',$url);
    return array_pop($arr);
}
function get_ext5($url){
    return pathinfo($url,PATHINFO_EXTENSION);
}

echo get_ext1($url).'<br/>';
echo get_ext2($url).'<br/>';
echo get_ext3($url).'<br/>';
echo get_ext4($url).'<br/>';
echo get_ext5($url).'<br/>';







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值