Blogger Information
Blog 29
fans 0
comment 0
visits 11067
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
1. 递归函数实战:删除指定目录 2. 字符串操作函数 3. url 操作函数
尹辉
Original
576 people have browsed it

一,递归函数实战:删除指定目录

  1. function delete_dir_file($dir)
  2. {
  3. // 初始状态
  4. $flag = false;
  5. // is_dir() 判断是否为目录
  6. if (is_dir($dir)) {
  7. // opendir() 打开目录句柄,成功则返回目录句柄的 resource, 或者在失败时返回 false
  8. if ($handle = opendir($dir)) {
  9. // readdir() 从目录句柄中读取条目(需要 opendir() 打开的目录句柄),成功则返回文件名 或者在失败时返回 false
  10. while (($file = readdir($handle)) !== false) {
  11. // 排除 ‘.'(表示有同级目录或文件) 和 '..'(表示有父目录)
  12. if ($file !== '.' && $file !== '..') {
  13. /**
  14. * 如果当前目录下没有目录,都是文件,则删除所有文件,跳出 if ($handle = opendir($dir)) 语句后删除当前目录
  15. * 如果当前目录下有子目录,则将当前目录作为参数调用自己 delete_dir_file($dir . DIRECTORY_SEPARATOR . $file)
  16. * 逐层深入,由内向外删除所有子目录和文件
  17. */
  18. // 判断当前是否为目录,是的话调用自己 delete_dir_file ($dir . DIRECTORY_SEPARATOR . $file)
  19. if (is_dir($dir . DIRECTORY_SEPARATOR . $file)) {
  20. delete_dir_file($dir . DIRECTORY_SEPARATOR . $file);
  21. } else {
  22. // 不是目录,是文件,用 unlink() 删除
  23. unlink($dir . DIRECTORY_SEPARATOR . $file);
  24. }
  25. }
  26. }
  27. }
  28. // 关闭打开的目录句柄
  29. closedir($handle);
  30. // 删除目录,成功将 $flag 设置为 true
  31. if (rmdir($dir)) {
  32. $flag = true;
  33. }
  34. }
  35. return $flag;
  36. }
  37. $del_path = __DIR__ . DIRECTORY_SEPARATOR . 'tmvc';
  38. if (delete_dir_file($del_path)) {
  39. echo json_encode(['msg' => '缓存目录删除成功', 'code' => 0], 320);
  40. } else {
  41. echo json_encode(['msg' => '缓存目录删除失败', 'code' => 1], 320);
  42. }

二,字符串操作函数

1,implode()

将数组转换为字符串,用指定符号连接

  1. $arr = ['html', 'css', 'uniapp', 'vue', 'electron'];
  2. echo implode('|', $arr); // html|css|uniapp|vue|electron

2,explode()

将字符串转为数组,用字符串中的某个字符分割成若干数组成员

  1. echo $_SERVER['DOCUMENT_URI']; // /phpedu/1.php
  2. $pathinfo = explode("/", $_SERVER['DOCUMENT_URI']);
  3. var_dump($pathinfo);
  4. // array(3) { [0]=> string(0) "" [1]=> string(6) "phpedu" [2]=> string(5) "1.php" }

3,str_replace()

字符串替换,格式:

str_replace(
array|string $search,
array|string $replace,
string|array $subject,
int &$count = null
): string|array

  • search: 查找的目标值,也就是 needle。一个数组可以指定多个目标。

  • replace: search 的替换值。一个数组可以被用来指定多重替换。

  • subject:执行替换的数组或者字符串。也就是 haystack。如果 subject 是一个数组,替换操作将遍历整个 subject,返回值也将是一个数组。

  • count:如果被指定,它的值将被设置为替换发生的次数。

  1. // 敏感词列表
  2. $search = ['交友', '广告', '转账', '直播', '带货', '陪聊', '异性'];;
  3. // 需要发送的留言
  4. $chatMSG = '本公司承接各类广告代理,提供直播和带货教学,提供异性交友陪聊服务...';
  5. // 将留言中的敏感词替换为 *** ,返回替换后的字符串
  6. // 第四个参数返回一个变量,值为替换的次数
  7. $RES = str_replace($search, "**", $chatMSG, $count);
  8. echo $RES; // 本公司承接各类**代理,提供**和**教学,提供******服务...
  9. echo $count; // 6
  10. // 过滤留言信息
  11. if ($count == 0) {
  12. // 消息发送
  13. } else {
  14. // 警告功能 服务端主动向客户端发送消息
  15. }

4,substr()

获取子字符串,格式:

substr(string $string, int $offset, ?int $length = null): string

  • string:原字符串
  • offset:开始位置,正数从前面开始,负数从后面开始
  • length:截取长度
  1. // 生成随机验证码 随机颜色
  2. // rand() — 产生一个随机整数
  3. $str = md5(rand());
  4. $code = substr($str, 0, 4);
  5. echo "<h1>";
  6. for ($i = 0; $i < strlen($code); $i++){
  7. // 十六进制颜色
  8. $color = '#' . substr(md5(rand()), 0, 6);
  9. echo "<span style='color: {$color}'>";
  10. echo substr($code, $i,1);
  11. echo "</span>";
  12. }
  13. echo "</h1>";

5,mb_substr()

和 substr() 一样都是截取子字符串,不同的是 mb_substr() 可以针对多字节编码的汉字进行截取,从而防止乱码的出现。

  1. echo substr('你放弃了吗', 0, 4); // 你�
  2. echo mb_substr('你放弃了吗', 0, 4); // 你放弃了

三,url 操作函数

1,urlencode()

将字符串编码并将其用于 URL 的请求部分,同时它还便于将变量传递给下一页。

除了 - _ . 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。

空格则编码为加号(+)。

  1. echo urlencode('韩寒'); // %E9%9F%A9%E5%AF%92

2,urldecode()

解码已编码的 URL 字符串。

  1. echo urldecode('%E9%9F%A9%E5%AF%92'); // 韩寒

3,http_build_query()

生成 urlencode 编码之后的请求字符串(请求参数)

  1. $params = [
  2. 'city' => '合肥', // 新闻类型
  3. 'key' => '12545we2234343', // 接口调用key,通过聚合平台申请开通
  4. ];
  5. $paramsString = http_build_query($params);
  6. echo $paramsString; // city=%E5%90%88%E8%82%A5&key=12545we2234343

4,base64_encode()

使用 MIME base64 对数据进行编码,为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。Base64-encoded 数据要比原始数据多占用 33% 左右的空间。

  1. // 示例:将二进制图片进行编码,将编码结果作为 <img> 的 src 属性
  2. // 获取图片文件(二进制文件)
  3. $file = file_get_contents("https://gw.alicdn.com/imgextra/i2/3372144204/O1CN01aBboqA1gvTtBoaBVx_!!3372144204-0-alimamacc.jpg_300x300q90.jpg_.webp");
  4. // 使用 MIME base64 对数据进行编码
  5. $file_base64 = base64_encode($file);
  6. // <img> 的 src 属性data:image/jpeg;base64,<?= $file_base64 ?>
  7. <img src="data:image/jpeg;base64,<?= $file_base64 ?>" alt="">
  8. // 页面上图片链接为:
  9. // Data:image/jpeg;base64,UklGRuBGAABXRUJQVlA4INRGAABQ9ACdASosASwBPjkYikOiIaETqfX8IAOEpu...

5,base64_decode()

对使用 MIME base64 编码的数据进行解码。

  1. $data = 'www.php.cn';
  2. $data64 = base64_encode($data);
  3. print $data64; // d3d3LnBocC5jbg==
  4. $decodeData = base64_decode($data64);
  5. print $decodeData; // www.php.cn
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post