處理關鍵字、標籤輸入時,常需將使用者輸入的各種空白(全形、半形、連續空白)統一轉為逗號分隔格式。本文提供一個處理邏輯完整的函數,涵蓋全半形轉換、連續空白合併、首尾修剪。
<?php
/**
* 關鍵字空白轉逗號
* @param string $str 輸入字串
* @return string 逗號分隔字串
*/
function emptyreplace($str) {
// 1. 全形空白轉半形
$str = str_replace(' ', ' ', $str);
// 2. 連續空白合併為單一空白
$str = preg_replace('/\s+/', ' ', $str);
// 3. 去除首尾空白
$str = trim($str);
// 4. 空白替換為逗號
$str = str_replace(' ', ',', $str);
return $str;
}
// 測試
$input = "關鍵字1 關鍵字2 關鍵字3";
echo emptyreplace($input); // 輸出: 關鍵字1,關鍵字2,關鍵字3
?>
/\s+/ 一次性將多個空白、Tab、換行合併為單一空白,比逐字元迴圈更高效;trim() 移除開頭結尾空白,避免產生前導或尾隨逗號;若使用者可能輸入逗號、分號、頓號等混合分隔:
function normalizeKeywords($str) {
// 統一各種分隔符為逗號
$str = preg_replace('/[,,;;\s、]+/', ',', $str);
// 移除首尾逗號
$str = trim($str, ',');
// 過濾空項
$arr = array_filter(explode(',', $str));
return implode(',', $arr);
}
善用正則表達式與字串函數組合,能以最少代碼處理複雜的文字正規化需求。