function delete_dir_file($dir)
{
// 初始状态
$flag = false;
// is_dir() 判断是否为目录
if (is_dir($dir)) {
// opendir() 打开目录句柄,成功则返回目录句柄的 resource, 或者在失败时返回 false
if ($handle = opendir($dir)) {
// readdir() 从目录句柄中读取条目(需要 opendir() 打开的目录句柄),成功则返回文件名 或者在失败时返回 false
while (($file = readdir($handle)) !== false) {
// 排除 ‘.'(表示有同级目录或文件) 和 '..'(表示有父目录)
if ($file !== '.' && $file !== '..') {
/**
* 如果当前目录下没有目录,都是文件,则删除所有文件,跳出 if ($handle = opendir($dir)) 语句后删除当前目录
* 如果当前目录下有子目录,则将当前目录作为参数调用自己 delete_dir_file($dir . DIRECTORY_SEPARATOR . $file)
* 逐层深入,由内向外删除所有子目录和文件
*/
// 判断当前是否为目录,是的话调用自己 delete_dir_file ($dir . DIRECTORY_SEPARATOR . $file)
if (is_dir($dir . DIRECTORY_SEPARATOR . $file)) {
delete_dir_file($dir . DIRECTORY_SEPARATOR . $file);
} else {
// 不是目录,是文件,用 unlink() 删除
unlink($dir . DIRECTORY_SEPARATOR . $file);
}
}
}
}
// 关闭打开的目录句柄
closedir($handle);
// 删除目录,成功将 $flag 设置为 true
if (rmdir($dir)) {
$flag = true;
}
}
return $flag;
}
$del_path = __DIR__ . DIRECTORY_SEPARATOR . 'tmvc';
if (delete_dir_file($del_path)) {
echo json_encode(['msg' => '缓存目录删除成功', 'code' => 0], 320);
} else {
echo json_encode(['msg' => '缓存目录删除失败', 'code' => 1], 320);
}
将数组转换为字符串,用指定符号连接
$arr = ['html', 'css', 'uniapp', 'vue', 'electron'];
echo implode('|', $arr); // html|css|uniapp|vue|electron
将字符串转为数组,用字符串中的某个字符分割成若干数组成员
echo $_SERVER['DOCUMENT_URI']; // /phpedu/1.php
$pathinfo = explode("/", $_SERVER['DOCUMENT_URI']);
var_dump($pathinfo);
// array(3) { [0]=> string(0) "" [1]=> string(6) "phpedu" [2]=> string(5) "1.php" }
字符串替换,格式:
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:如果被指定,它的值将被设置为替换发生的次数。
// 敏感词列表
$search = ['交友', '广告', '转账', '直播', '带货', '陪聊', '异性'];;
// 需要发送的留言
$chatMSG = '本公司承接各类广告代理,提供直播和带货教学,提供异性交友陪聊服务...';
// 将留言中的敏感词替换为 *** ,返回替换后的字符串
// 第四个参数返回一个变量,值为替换的次数
$RES = str_replace($search, "**", $chatMSG, $count);
echo $RES; // 本公司承接各类**代理,提供**和**教学,提供******服务...
echo $count; // 6
// 过滤留言信息
if ($count == 0) {
// 消息发送
} else {
// 警告功能 服务端主动向客户端发送消息
}
获取子字符串,格式:
substr(string $string
, int $offset
, ?int $length
= null
): string
// 生成随机验证码 随机颜色
// rand() — 产生一个随机整数
$str = md5(rand());
$code = substr($str, 0, 4);
echo "<h1>";
for ($i = 0; $i < strlen($code); $i++){
// 十六进制颜色
$color = '#' . substr(md5(rand()), 0, 6);
echo "<span style='color: {$color}'>";
echo substr($code, $i,1);
echo "</span>";
}
echo "</h1>";
和 substr() 一样都是截取子字符串,不同的是 mb_substr() 可以针对多字节编码的汉字进行截取,从而防止乱码的出现。
echo substr('你放弃了吗', 0, 4); // 你�
echo mb_substr('你放弃了吗', 0, 4); // 你放弃了
将字符串编码并将其用于 URL 的请求部分,同时它还便于将变量传递给下一页。
除了 -
_
.
之外的所有非字母数字字符都将被替换成百分号(%
)后跟两位十六进制数。
空格则编码为加号(+
)。
echo urlencode('韩寒'); // %E9%9F%A9%E5%AF%92
解码已编码的 URL 字符串。
echo urldecode('%E9%9F%A9%E5%AF%92'); // 韩寒
生成 urlencode 编码之后的请求字符串(请求参数)
$params = [
'city' => '合肥', // 新闻类型
'key' => '12545we2234343', // 接口调用key,通过聚合平台申请开通
];
$paramsString = http_build_query($params);
echo $paramsString; // city=%E5%90%88%E8%82%A5&key=12545we2234343
使用 MIME base64 对数据进行编码,为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。Base64-encoded 数据要比原始数据多占用 33% 左右的空间。
// 示例:将二进制图片进行编码,将编码结果作为 <img> 的 src 属性
// 获取图片文件(二进制文件)
$file = file_get_contents("https://gw.alicdn.com/imgextra/i2/3372144204/O1CN01aBboqA1gvTtBoaBVx_!!3372144204-0-alimamacc.jpg_300x300q90.jpg_.webp");
// 使用 MIME base64 对数据进行编码
$file_base64 = base64_encode($file);
// <img> 的 src 属性data:image/jpeg;base64,<?= $file_base64 ?>
<img src="data:image/jpeg;base64,<?= $file_base64 ?>" alt="">
// 页面上图片链接为:
// Data:image/jpeg;base64,UklGRuBGAABXRUJQVlA4INRGAABQ9ACdASosASwBPjkYikOiIaETqfX8IAOEpu...
对使用 MIME base64 编码的数据进行解码。
$data = 'www.php.cn';
$data64 = base64_encode($data);
print $data64; // d3d3LnBocC5jbg==
$decodeData = base64_decode($data64);
print $decodeData; // www.php.cn