2011-05-02 41 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将在保存模型的数据时自动清理数据。