資料庫欄位儲存逗號分隔的語言標籤(如 `English,Mandarin Chinese,French`),需將所有 `Mandarin Chinese` 統一替換為 `Chinese`。資料量大、時間緊,不想寫正則或複雜邏輯。
<?php
function replaceMandarin() {
// 假設使用 Drupal 資料庫抽象層 db_query/db_fetch_object
$sql = db_query("SELECT field_languages_value, nid
FROM {content_type_company_profile}
WHERE field_languages_value LIKE '%Mandarin Chinese%'");
while ($row = db_fetch_object($sql)) {
// 以目標字串分割
$parts = explode("Mandarin Chinese", $row->field_languages_value);
// 重組:parts[0] + "Chinese" + parts[1] + "Chinese" + parts[2] ...
$newVal = implode('Chinese', $parts);
db_query("UPDATE {content_type_company_profile}
SET field_languages_value = '%s' WHERE nid = %d",
$newVal, $row->nid);
}
}
?>
| 方法 | 優點 | 缺點 |
|---|---|---|
str_replace | 內建、快、支援陣列搜尋/替換 | 需注意大小寫、編碼一致 |
preg_replace | 正則強大、支援邊界/模式 | 寫法複雜、效能較慢 |
explode + implode | 直觀、無正則負擔、記憶體友善 | 僅適合固定字串全域替換 |
此技巧適用於固定字串全域替換,若需條件替換(如僅替換單詞邊界)請改用正則。