以下是PHP字符串处理的实用示例,涵盖常见开发场景:
1. 安全过滤用户输入
// 过滤HTML标签并转义特殊字符
$userInput = '<script>alert("xss")</script>测试';
$cleanInput = htmlspecialchars(strip_tags($userInput), ENT_QUOTES, 'UTF-8');
echo $cleanInput; // 输出:<script>alert("xss")</script>测试
2. 多字节字符串截取(中文安全)
// 截取含中文的字符串(避免乱码)
$text = "PHP处理UTF-8字符串的最佳实践";
$shortText = mb_substr($text, 0, 6, 'UTF-8') . (mb_strlen($text) > 6 ? '...' : '');
echo $shortText; // 输出:PHP处理UTF...
3. 生成随机验证码
// 生成6位字母数字混合验证码
$chars = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';
$code = substr(str_shuffle($chars), 0, 6);
echo $code; // 示例输出:X8K9P3
4. URL参数解析与构建
// 解析URL参数
$url = "https://example.com?name=张三&age=25";
parse_str(parse_url($url, PHP_URL_QUERY), $params);
print_r($params); // 输出:Array ( [name] => 张三 [age] => 25 )
// 构建URL参数
$newParams = http_build_query(['city' => '北京', 'job' => '工程师']);
echo $newParams; // 输出:city=%E5%8C%97%E4%BA%AC&job=%E5%B7%A5%E7%A8%8B%E5%B8%88
5. 格式化金额显示
// 千分位格式化金额
$amount = 1234567.89;
echo number_format($amount, 2, '.', ','); // 输出:1,234,567.89
6. 敏感信息脱敏处理
// 手机号/身份证脱敏
function maskInfo($str, $start = 3, $end = 3) {
$len = strlen($str);
return substr($str, 0, $start) . str_repeat('*', $len - $start - $end) . substr($str, -$end);
}
echo maskInfo('13800138000', 3, 4); // 输出:138****8000
echo maskInfo('110101199001011234', 6, 4); // 输出:110101********1234
7. CSV数据解析
// 解析CSV字符串为数组
$csv = "姓名,年龄,性别\n张三,25,男\n李四,30,女";
$lines = explode("\n", $csv);
$headers = str_getcsv(array_shift($lines));
$result = array_map(function($line) use ($headers) {
return array_combine($headers, str_getcsv($line));
}, $lines);
print_r($result);
/* 输出:
Array (
[0] => Array ( [姓名] => 张三 [年龄] => 25 [性别] => 男 )
[1] => Array ( [姓名] => 李四 [年龄] => 30 [性别] => 女 )
)
*/
8. 关键词高亮显示
// 搜索关键词高亮
function highlightKeywords($text, $keywords, $color = 'red') {
return preg_replace('/(' . preg_quote($keywords, '/') . ')/iu',
"<span style=\"color:{$color}\">$1</span>",
$text);
}
echo highlightKeywords("PHP是最好的编程语言", "编程", "#FF0000");
// 输出:PHP是最好的<span style="color:#FF0000">编程</span>语言
9. 密码强度校验
// 密码复杂度验证
function validatePassword($password) {
return preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/', $password);
}
var_dump(validatePassword('Abcd123!')); // bool(true)
var_dump(validatePassword('weakpass')); // bool(false)
10. 自然语言处理辅助
// 提取字符串中的英文单词
$text = "PHP 8.3发布了New JIT优化特性";
preg_match_all('/\b[a-zA-Z]+\b/', $text, $matches);
print_r($matches[0]); // 输出:Array ( [0] => PHP [1] => New [2] => JIT )
每个示例都针对实际开发场景设计,可直接集成到项目中。需要特别注意:
- 多字节字符处理必须使用
mb_
系列函数 - 用户输入必须经过过滤和转义
- 正则表达式应考虑性能问题