2011-05-02 106 views
0

在CakePHP中替換微軟字符的最佳方式是什麼?CakePHP - 替換微軟字符

所以我試圖在編輯或保存每個文本字段之前運行以下功能。

function convert_ms_chars($string) 
{ 
    $search = array(chr(145), 
        chr(146), 
        chr(147), 
        chr(148), 
        chr(151)); 

    $replace = array("'", 
        "'", 
        '"', 
        '"', 
        '-'); 

    return str_replace($search, $replace, $string); 
} 

我現在這樣做的方式現在感覺超級貧民窟。

if (!empty($this->data)) { 
    $this->data['field'] = $this->convert_ms_chars($this->data['field']); 
    $this->data['field1'] = $this->convert_ms_chars($this->data['field1']); 
} 

更不用說我需要將它複製到多個控制器上。
有沒有更好的方法可以解決這個問題?

感謝,
三通

回答

0

代碼組織 - 如果它是一個庫的方法(即東西,你會在許多不同的控制器來使用),你應該考慮把它放在別的地方(一個經常引用的文件)而不是在多個控制器中具有相同的代碼。

功能需求 - 據我所知,這是相當多的方式來做到這一點。你可以將它壓縮成一行,但最終你會替換字符串中的字符;使用字符串替換方法是如何完成的。

0

除了slifty的評論之外,在CakePHP中執行此操作的最佳方法是創建一個包含您的convert_ms_chars方法的組件。

然後,您只需將該組件添加到您想要使用它的每個控制器中的$components陣列即可。那麼你可以在適當的時候通過做$this->YourComponentName->convert_ms_chars()來調用它。

如果你想這樣做,每次你做一個save()你也可以將它添加到模型beforeSave()回調。這樣,CakePHP將在保存模型的數據時自動清理數據。