PHP Manual 2016 [5] — 字符串


很久以前学习的时候记录的,正在整理中…希望能帮助到一些人…禁止转载!


<?php
# 字符串截取
# substr()对字符串进行指定数量的截取,可以取负值
# substr(字符串,从第几位开始截取,从第几位删除(可选));
# strstr()/strchr()查找一个字符串在另一个字符串中第一次出现
# strstr()查找字符串,返回字符串到结尾的字符,如果找不到返回假
# strstr()和strchr()功能是一样的,只是别名
# stristr()不区分大小写查找
# strrchr()查找一个字符串在另一个字符串中最后出现的位置
# strrchr()从后面往前面查找,查找到停止返回查找到的字符串到结尾
# strpos()从头查找一个字符串在另一个字符串中第一次出现的位置
# strpos()是区分大小写的,stripos()是不区分大小写的,功能相同
# strrpos()是从后面查找的,功能同strpos()函数
# strtok()通过字符串将主字符串进行拆分成字符串(非数组)
# strtok(需要拆分的字符串,'以哪个字符进行拆分');
# 当第一次strtok()截取的时候会返回第一个,同时会在内存中把剩下的字符
# 串保留起来,下次再执行的时候可以对剩下的字符串进行操作
# strtok()可以用while循环拆分,0需要判断才能截取,因为0是false
# 可以对字符串类型进行判断 !==false
# parse_str()可以把字符串截取为变量
# chunk_split()把字符串按指定大写拆分,拆分中文可能会出现乱码
# 因为一个英文一个字节,一个中文两个字节
# chunk_split(需要拆分的字符串,拆分成几个一组,'以什么进行分割');
$url='www.baidu.com';
echo substr($url,4);
echo substr($url,4,9);
echo substr($url,-3,2);

$chr='百度搜索引擎,比谷歌搜索引擎好吗? 还是百度';
$tag='1234567890abcdefg';
var_dump(strchr($chr,'百度'));
var_dump(strstr($chr,'百度'));
var_dump(strstr($chr,'Google'));
var_dump(strstr($tag,'123456'));
var_dump(strstr($tag,'Ab'));
var_dump(stristr($tag,'Ab'));

var_dump(strrchr($chr,'还是'));

echo strpos($chr,'搜索');
echo strpos($tag,'g');
echo strpos($tag,'G');

echo stripos($tag,'G');

echo strrpos($chr,'搜索');

$str0 = 'PHP,JAVA,NodeJS,Golang';
$tok = strtok($str0,',');
while($tok!==false){
echo $tok;
$tok= strtok(',');
}

$sign="http://www.baidu.com/?Ask=true&len=xml&check=true";
$urlck=substr($sign,(strpos($sign,'?')+1));
echo $urlck;
parse_str($urlck);
echo "Ask={$Ask}&len={$len}&check={$check}"

$str9 = "PHPStorm,UltraEdit,UEStudio,Notpad";
echo chunk_split($str9,3);
echo chunk_split($str9,3,'|');
?>

<?php
# 字符串输出
# print和echo严格来说都不属于函数
# echo() 可以加括号,也可以不加括号
# print()
# printf(转换类型比如浮点型(float),需要格式化的字符串);
# printf单引号会报错,里面有$符无法正常解析,所以说必须双引号
# echo作用:输出一个或多个字符串
# 区别:echo的执行速度优于print
echo '百度新浪搜狐腾讯','人人淘宝','360腾讯管家';
$ecy = 'baidu.com';
$bta = 'sina.com';
echo $ecy$bta;
echo ($ecy);

print $ecy;

$a='10364';
$b='64327';
printf("%f",$a);
printf("%.3f",$a);
printf("百度%.3f网",$a);
printf("百度%.3f网站%f大全",$a,$b);
printf("百%1\$.2f度%.3f网站大全",$a);
?>

<?php
# 字符串翻转函数
$mac = 'DATE DATA 2016'."<br>";
echo strrev($mac);
# md5 / sha1加密函数
echo md5('admin')."<br>";
echo sha1('admin');
$admin = 'admin';
if(md5($admin)=='21232f297a57a5a743894a0e4a801fc3'){
echo "success";
}
# 格式化金额字符串函数
# number_format(字符串,小数位数,小数点,千位分隔符);
$number ='102476878454574';
echo number_format($number,3);
echo number_format($number,3,'|','+');
# 字符串拆分成数组函数
# explode(以哪个字符进行拆分,需要拆分的字符串,需要拆分多少个);
# 需要拆分多少个可以不填,不填就是默认全拆
$String = "baidu,sina,2010,886,443.Good";
$array1 = explode(',',$String);
$array2 = explode(',',$String,2);
print_r($array1);
echo $array1[0];
print_r($array2);
# 数组元素组合成字符串函数
# implode(连接字符串(可选),数组);
$array3 = array(2010,2011,2013,2014);
var_dump(implode($array3));
var_dump(implode('+',$array3));
?>

<?php
# 字符串处理函数
# trim 对字符串左右空格删除
# ltrim 对字符串作部空格删除(left)
# rtrim 对字符串右侧空格删除(right)
# strlen(字符串);显示字符串的长度
# strtolower(字符串); 将字符串转换为小写
# strtoupper(字符串); 将字符串转换成大写
# ucfirst(字符串); 首字母大写
# ucwords(字符串); 单词首字母大写
# str_pad(字符串,填充后新字符串长度,填充内容,方向); 字符串填充函数
# 填充的方向: STR_PAD_BOTH 左右两侧进行填充,如果填充为奇数右侧多添
# 填充方向: STR_PAD_LEFT 左侧填充,STR_PAD_RIGHT 右侧填充
# 填充后新字符串长度小于填充前字符串长度会不执行!如果没有方向,默认添右

$baidu = " https://baidu.com ";
echo strlen($baidu);
echo strlen(trim($baidu));
echo strlen(ltrim($baidu));
echo strlen(rtrim($baidu));

$sina = "HTTPS://SINA.COM";
echo strtolower($sina);

$tencent = "http://tencent.com";
echo strtoupper($tencent);

$Text = "made in korean";
echo ucfirst($Text);

$word = "made in china";
echo ucwords($word);

$google = "http://google.com";
echo str_pad($google,30,'+',STR_PAD_BOTH);
echo str_pad($google,30,'+',STR_PAD_LEFT);
echo str_pad($google,30,'+',STR_PAD_RIGHT);
?>

<?php
# 定义字符串
# '单引号 "双引号 <<<定界符
# 双引号可以正常解析里面的变量,单引号不可以解析里面的变量
# PHP会解析$符后面所有的只要是连续的都会当作变量进行处理,不过可以通过{}进行解决!
# 双引号支持转义符,单引号不支持转义符
# 因为双引号需要查找里面的变量,而单引号不需要,所以相对来说单引号比双引号速度快
# 定界符:<<<三个尖括号定界符名称开始,定界符名称分号结束,开头末尾不能有任何字符!
# 双引号单引号等不需要转义即可在单引号里面显示
$Str0='百度';
$Str1="新浪";
$Str2="新浪$Str中国";
$Str3='新浪{$Str}';
$Str4="新浪{$Str}";
$Str5="乐视\t{$Str}";
$Str6='新浪\t{$Str}';
var_dump($Str0);
var_dump($Str1);
$pac=<<< pack
unicode,ascii,utf-8,'utf{$Str}-16,gbk,base64
good time! 2000PHP!"
pack
;
?>

<?php
# str_replace() - 字符串替换函数 | 参数可以用于替换数组
# str_replace(需要替换哪些字符串,替换后的字符串,原字符串,可选替换数量统计);
# str_replace()区分英文大小写,str_ireplace()不区分英文大小写,功能相同!
$String = "踏实一些,不要着急,你想要的,岁月都会给你!";
$Replace1 = array("踏实一些","不要着急","你想要的","岁月都会给你");
$Replace2 = array("踏实些","要着急","想要的","会给你");
echo str_replace($Replace1,$Replace2,$String);
echo str_replace('踏实','实踏','踏实一些');
?>

<?php
# strcmp() - 字符串比较函数
# strcmp()区分英文大小写,strcasecmp()不区分英文大小写,功能相同!
# strcasecmp()不是按自然数比较的,strnatcmp()是按自然数比较的!功能相同!
# strncmp()指定位置进行字符串比较
# 如果相等返回0
# 如果字符串1<字符串2,返回-1
# 如果字符串2>字符串1,返回1
echo strcmp("踏实一些","踏实一些");
echo strcmp("1","2");
echo strcmp("2","1");
echo strncmp("1000","1001",3);
?>

<?php
# similar_text() - 字符串相似度比较函数
# similar_text('比较字符串','比较字符串','可选相似度百分比');
echo similar_text('PHP6','PHP');
similar_text('PHP6','PHP',$String);
echo $String;
?>

<?php
# substr_count() - 字符串统计函数
# substr_count(原字符串,'统计内容','从第几位开始查找','查找多少个字符');
$String = '踏实一些不要着急,踏实一些不要着急';
echo substr_count($String,'踏实一些');
echo substr_count($String,'踏实一些',6,2);
?>

<?php
# parse_url() - 字符串处理函数
# 解析URL返回组成部分
$URL = 'https://baidu.com/exp/call?s=check&action=add';
$Array = parse_url($URL);
print_r($Array);
echo parse_url($URL,PHP_URL_HOST);
echo parse_url($URL,PHP_URL_PATH);
?>

<?php
# urlencode() - URL编码函数 | urldecode() - URL解码函数
echo urldecode('踏实一些,不要着急,你想要的,岁月都会给你!');
echo urlencode('%e8%b8%8f%e5%ae%9e%e4%b8%80%e4%ba%9b');
?>

<?php
# htmlentities() - 字符串转换为HTML实体函数
# htmlentities(操作内容,转换规则);
# ENT_COMPAT只转换双引号,ENT_QUOTES转换单双引号
# ENT_NOQUOTES不转换任何引号
# htmlspecialchars()不会对中文进行转换
# htmlspecialchars_decode()对实体进行解码
$String = '<span>Baidu</span>';
$String1 = '<span>百度</span>';
$String2 = '&lt;span&gt;Baidu&lt;/span&gt;';
echo htmlentities($String);
echo htmlentities($String,ENT_COMPAT);
echo htmlspecialchars($String1);
echo htmlspecialchars_decode($String2);
?>

<?php
# addslashes() - 在预定义字符串前添加反斜杠函数
# get_magic_quotes_gpc获取PHP.ini中是否开启自动转义
# 有必要对get_magic_quotes_gpc()判断,否则会双重转义
# stripslashes()将转义字符串前的反斜杠删除
$String = '\'踏实一些\'';
if (!get_magic_quotes_gpc()){
echo addslashes($_GET['check']);
}else{echo 'get_magic_quotes_gpc() Not Open!';}
echo stripslashes($String);
?>

<?php
# get_magic_quotes_runtime() - 获得外部文件及数据库是否进行转义
# set_magic_quotes_runtime() 设置获得外部文件及数据库进行转义
# set_magic_quotes_runtime() 1开启0关闭,一般情况都是关闭的
# set_magic_quotes_runtime() 一般是对数据库读取备份时会用到!
# strip_tags()去除HTML,XML,PHP的标签项
# strip_tags(需要去除的字符串,可选保留字符串);
set_magic_quotes_runtime(1);
echo get_magic_quotes_runtime();
$String = '<div><span>String<span><div>';
echo strip_tags($String);
echo strip_tags($String,'<div>');
?>
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.