php字符串是二进制安全的,(也就是说,字符串可以包含null字节),而且可以根据需要扩展和收缩,其大小只受PHP可用内存大小限制。
memory_limit = 128M
双引号字符串转义序列:https://www.php.net/manual/zh/regexp.reference.escape.php
1.访问子串
strpos — 查找字符串首次出现的位置
if(strpos('beijing','bei') !== false){ echo 'bei in beijing'; }
// 忽视位置偏移量之前的字符进行查找 $newstring = 'abcdef abcdef'; $pos = strpos($newstring, 'a', 1); // $pos = 7, 不是 0
2.抽取子串
substr — 返回字符串的子串
substr(string $string, int $start, int $length = ?): string
返回提取的子字符串, 或者在失败时返回 false。
扩展函数 mb_substr
.
3.替换子串
substr_replace — 替换字符串的子串
$phone = '15188888888'; $string = substr_replace($phone,'****',3,4); var_dump($string);
扩展:str_replace与substr_replace的区别:
str_replace(find,replace,string,count)
demo:
#字符串替换字符串 $stringData = str_replace('world','Admin','Hello world',$i); print_r($stringData);//Hello Admin echo '替换次数:'.$i;//替换次数:1 #字符串替换数组键值 $arrData = array('A','B','C','D_A'); print_r(str_replace('A','E',$arrData,$i));//Array ( [0] => E [1] => B [2] => C [3] => D_E ) echo '替换次数:'. $i;//替换次数:2 #数组匹配字符串替换数组键值 $find = array('A','D'); $replace = 'E'; $arrData = array('A','B','C','D_A'); print_r(str_replace($find,$replace,$arrData,$i));//Array ( [0] => E [1] => B [2] => C [3] => E_E ) echo '替换次数:'.$i;//替换次数:3 #数组匹配数组替换数组键值 $find = array('A','D'); $replace = array('E'); $arrData = array('A','B','C','D_A'); print_r(str_replace($find,$replace,$arrData,$i));//Array ( [0] => E [1] => B [2] => C [3] => _E ) echo '替换次数:'.$i;//替换次数:3
substr_replace(string,replacement,start,length)
#替换字符串 $a=substr_replace('ABCD1234','...',4); print_r($a);//ABCD... #插入字符串 $b=substr_replace('ABCD1234','...',4,0); print_r($b);//ABCD...1234 #插入字符串和规定要替换多少个字符 $c=substr_replace('ABCD1234','...',4,1); print_r($c);//ABCD...234 #数组匹配字符串插入 $replace = array('A','BB','CCC','DDDD'); print_r(substr_replace($replace,'E',2,0));//Array ( [0] => AE [1] => BBE [2] => CCEC [3] => DDEDD )
5.按单词或字节反转字符串
希望反转一个字符串中的单词或字节
strrev — 反转字符串
$string = "this is a dog"; $s = implode(' ',array_reverse(explode(' ',$string))); //dog a is this
6.生成随机数
function GetRandStr($length){ $str='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; $len=strlen($str)-1; $randstr=''; for($i=0;$i<$length;$i++){ $num=mt_rand(0,$len); $randstr .=$str[$num]; } return $randstr; } $number=GetRandStr(6); echo $number;
7.控制字母大小写
ucfirst — 将字符串的首字母转换为大写
$foo = 'hello world!'; $foo = ucfirst($foo); // Hello world! $bar = 'HELLO WORLD!'; $bar = ucfirst($bar); // HELLO WORLD! $bar = ucfirst(strtolower($bar)); // Hello world!
ucwords — 将字符串中每个单词的首字母转换为大写
$foo = 'hello|world!'; $bar = ucwords($foo); // Hello|world! $baz = ucwords($foo, "|"); // Hello|World!
strtoupper — 将字符串转化为大写
$str = "Mary Had A Little Lamb and She LOVED It So"; $str = strtoupper($str); echo $str; // 打印 MARY HAD A LITTLE LAMB AND SHE LOVED IT SO
strtolower — 将字符串转化为小写
$str = "Mary Had A Little Lamb and She LOVED It So"; $str = strtolower($str); echo $str; // 打印 mary had a little lamb and she loved it so
8.去除字符串收尾的空格
可以使用ltrim(),rtrim()和trim()
var_dump(ltrim('10 PRINT A$','0...9')); //打印 string(9) " PRINT A$"
9.生成逗号分隔数据
fputcsv()函数写入文件
$list = [ [ "George,John,Thomas,USA"], [ "James,Adrew,Martin,USA"] ]; $file = fopen("./contacts.csv","w") or die('fopen orror'); foreach ($list as $line) { fputcsv($file,$line); } fclose($file);
10.使文本在指定行长度自动换行
wordwrap — 打断字符串为指定数量的字串