在PHP开发中,正则表达式和数组操作是处理字符串和数据的两大核心技能。本文将深入探讨如何将二者完美结合,实现高效的数据处理。
正则表达式(Regular Expression)是一种强大的字符串匹配工具,PHP中主要通过preg系列函数实现:
// 基本匹配示例
if (preg_match('/^\d{3}-\d{3}-\d{4}$/', $phone)) {
echo '有效电话号码';
}
// 全局匹配
preg_match_all('/(.*?)<\/h[1-6]>/', $html, $matches);
preg_grep可以基于正则表达式过滤数组元素:
$emails = ['test@example.com', 'invalid', 'user@domain.com'];
$validEmails = preg_grep('/^[\w\.-]+@[\w\.-]+\.\w+$/', $emails);
对数组每个元素执行正则替换并回调处理:
$texts = ['价格:¥100', '特价:¥80'];
$processed = array_map(function($item) {
return preg_replace_callback('/¥(\d+)/',
function($matches) {
return '$' . ($matches[1] * 0.15);
},
$item);
}, $texts);
使用array_filter结合preg_match实现:
$urls = ['https://example.com', 'ftp://server', 'http://test.com'];
$httpsUrls = array_filter($urls, function($url) {
return preg_match('/^https:\/\//i', $url);
});
$logLines = file('access.log');
$errorLines = preg_grep('/\[ERROR\]|5\d{2}/', $logLines);
$userData = [
'email' => 'user@example.com',
'phone' => '123-456-7890'
];
$errors = [];
if (!preg_match('/^[\w\.-]+@[\w\.-]+\.\w+$/', $userData['email'])) {
$errors[] = '邮箱格式无效';
}
通过将PHP正则表达式与数组操作相结合,开发者可以构建出强大而灵活的数据处理逻辑,显著提升开发效率和代码质量。