批改状态:未批改
老师批语:

PHP字符串操作字符串是 PHP 中重要的数据类型之一。在 Web 开发中,很多情况下都需要对字符串进行处理和分析,通常将涉及字符串的格式化、字符串的连接与分割、字符串的比较、查找等一系列操作。用户和系统的交互也基本上是用文字来进行的,因此系统对文本信息,即字符串的处理非常重要。$str = "zhant";// 字符串可以当做数组一样通过下标访问每一个字符echo $str[0]; // zecho $str{2}; // a// 修改字符串内容$str{4} = "g";echo $str; // zhang// 一个中文的汉字占三个字节$title = "你好";// strlen返回字符串的长度echo strlen($title); // 6// 那么访问的时候,我们需要进行拼接echo $title{0}.$title{1}.$title{2}; // 你1234567891011121314生成一个随机的四位验证码// 生成a-z A-Z 0-9 组成的字符串$codes = implode("",range('a','z')).implode("",range('A','Z')).implode("",range(0,9));$code = '';for ($i=0; $i < 4; $i++) {// 获取随机索引数$index = mt_rand(0,strlen($codes)-1);$code .= $codes[$index];}echo "<span style='color:red'>{$code}<span>";12345678910字符串比较、分割、替换操作strcmp和strcasecmp字符串比较函数strcmp:https://www.php.net/manual/zh/function.strcmp.phpstrcasecmp:https://www.php.net/manual/zh/function.strcasecmp.php// 字符串比较函数 如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。// strcmp ( string $str1 , string $str2 ) : int 严格区分大小写echo strcmp('abc','ab'); // 1echo strcmp('abc','abd'); // -1echo strcmp('abc','ABC'); // 1echo strcmp('abc','abc'); // 0// 根据ASCII码逐个进行比较// -------------------------------------// strcasecmp 和上述返回值一样 但不区分大小写echo strcasecmp('abc','ABC'); // 0echo strcasecmp('abc','abc'); // 0123456789101112字符串的拆分与合并操作implode() 数组的值转化为字符串 join()是该函数的别名: implode()explode字符串转数组:https://www.php.net/manual/zh/function.explode.phplist() 把数组中的值赋给一组变量:https://www.php.net/manual/zh/function.list.php$study = ['html','css','js','es6','jquery','vue','react'];// 数组转字符串函数 第一个参数为分隔符 第二个参数为数组echo implode('---',$study);// html---css---js---es6---jquery---vue---reactecho join(',',$study);// html,css,js,es6,jquery,vue,react// explode 字符串转换为数组$str = "html,css,js,es6,jquery,vue,react";// 以什么来拆分字符串print_r(explode(",", $str));/*Array ( [0] => html [1] => css [2] => js [3] => es6 [4] => jquery [5] => vue [6] => react )*/// 第三个参数指定拆分成几个数组print_r(explode(",", $str,6));/*Array ( [0] => html [1] => css [2] => js [3] => es6 [4] => jquery [5] => vue,react )*/// -------------------------// list() 将数组的值赋值给若干变量list($localhost,$username,$password,,$port) = explode(":", 'localhost:root:root:utf8:3306');echo "mysql:host={$localhost};username={$username};password={$password};port={$port}";/* mysql:host=localhost;username=root;password=root;port=3306 */// 关联数组 赋值给变量要以键值对的方式一一对应$params = ['host'=>'localhost','username'=>'root','password'=>'root'];list('host'=>$host,'username'=>$username,'password'=>$password) = $params;printf("host=%s;username=%s;password=%s",$host,$username,$password);/* host=localhost;username=root;password=root */1234567891011121314151617181920212223242526272829303132字符串截取// substr()字符串截取函数echo substr('abcdefg',3,2); // deecho substr('abcdefg',3); // defgecho substr('abcdefg',-3); // efg// ASCII转换函数 chr() ord() 一般用于判断用户名是否以字母开头,截取第一个字符判断其ASCII的大小范围 A 65 a 97// ASCII对照表http://c.biancheng.net/c/ascii/// ucfirst 将首字母转换为大写// ord() 字符串转ASCII码// chr() ASCII码转字符$username = 'admin';echo ord(substr(ucfirst($username),0,1))>=65 && ord(substr(ucfirst($username),0,1))<=90?'用户名正确':'用户名请以字母开头';echo strlen($username)<4||strlen($username)>10?'用户名长度需为6-10个字符':'用户名正确';12345678910111213字符串替换函数(敏感词转义)str_replace() 子字符串替换:https://www.php.net/manual/zh/function.str-replace.php// 将window系统的目录分割符替换为Linux目录分隔符$path = "D:\phpstudy_pro\Extensions\php\php7.3.9nts\php.exe";// 查看当前操作系统支持的路径分隔符echo DIRECTORY_SEPARATOR;// 需要替换的字符内容 替换后的字符内容 字符串echo str_replace('\\','/',$path);/* D:/phpstudy_pro/Extensions/php/php7.3.9nts/php.exe */// 第四个参数可以接收替换的次数echo str_replace('转账','***','支持微信大额转账,支付宝转账,银行卡转账',$count);// 支持微信大额***,支付宝***,银行卡***echo "\'转账\'敏感词出现次数:{$count}";// 第一个参数 需要替换的字符内容可以是一个数组$vowels = array("赌博","美女",'发牌','澳门');echo str_replace($vowels, "**", "欢迎访问赌博平台,澳门皇冠赌博网站,美女在线发牌");// 欢迎访问**平台,**皇冠**网站,**在线**// 敏感词和替换内容都可以为数组,将替换为对应的内容$search = ['交友','广告','转账','直播','带货','陪聊','异性'];$flag = ['***','---','&&&','000','*货*','聊天','同性'];$news = '本公司承接各类广告代理,提供直播和带货教学服务,提供异性交友在线陪聊服务……';echo str_replace($search,$flag,$news);/* 本公司承接各类---代理,提供000和*货*教学服务,提供同性***在线聊天服务…… */123456789101112131415161718192021222324URL链接解析函数parse_str() 将字符串解析成数组https://www.php.net/manual/zh/function.parse-str.phpparse_url() 解析 URL,返回其组成部分的数组https://www.php.net/manual/zh/function.parse-url.phphttp_build_query 生成URL_encode之后的请求字符串https://www.php.net/manual/zh/function.http-build-query.php// parse_str() 将字符串解析成数组$str = "first=value&arr[]=foo+bar&arr[]=baz";parse_str($str, $output);extract($output);echo $first; // valueecho $arr[0]; // foo barecho $arr[1]; // baz$url = "id=1&name=zhang&gender=1";parse_str($url,$result);echo "<pre>";print_r($result);/*Array([id] => 1[name] => zhang[gender] => 1)*/// --------------------------------// parse_url() 解析 URL,返回其组成部分的数组$url = 'http://zhang.com:password@hostname/0425/demo.php?id=1&name=zhang#anchor';echo "<pre>";print_r(parse_url($url));/*Array([scheme] => http[host] => hostname[user] => zhang.com[pass] => password[path] => /0425/demo.php[query] => id=1&name=zhang[fragment] => anchor)*/// 可以通过设置第二个参数来返回需要的部分echo parse_url($url,PHP_URL_QUERY); // id=1&name=zhangecho parse_url($url, PHP_URL_PATH); // /0425/demo.php// -------------------------------------------// http_build_query — 生成 URL-encode 之后的请求字符串$url = "http://zhang.com?name=张珊&age=20&email=zhang@qq.com";$query = parse_url($url,PHP_URL_QUERY);// name=张珊&age=20&email=zhang@qq.com// 获取到query在通过parse_str转换为数组parse_str($query,$params);echo "<pre>";print_r($params);/*Array([name] => 张珊[age] => 20[email] => zhang@qq.com)*/// 请求参数转为Unicodeecho http_build_query($params);// name=%E5%BC%A0%E7%8F%8A&age=20&email=zhang%40qq.com// http_build_query参数不光可以为数组,也可以为一个对象echo http_build_query(new class{public $name = 'admin';public $email = 'admin@php.cn';private $gender = 'male'; // 私有成员});
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号