CakePHP - 替换微软字符

时间:2011-05-02 23:09:13

标签: cakephp

在CakePHP中替换Microsoft Word字符的最佳方法是什么?

所以我试图在编辑或保存等每个文本字段之前运行以下函数。

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']);
}

更不用说我需要在几个控制器上复制它 有没有更好的方法来解决这个问题?

谢谢,
三通

2 个答案:

答案 0 :(得分:0)

代码组织 - 如果它是一个库方法(即你将在许多控制器中使用的东西),你应该考虑将它放在其他地方(一个常用的文件),而不是让它多个控制器中的相同代码。

功能需求 - 据我所知,这几乎就是这样做的。你可以将它压缩成一行,但最终你要替换字符串中的字符;使用字符串替换方法是如何完成的。

答案 1 :(得分:0)

除了slifty的评论之外,在CakePHP中执行此操作的最佳方法是创建一个包含convert_ms_chars方法的组件。

然后,您只需将该组件添加到您想要使用它的每个控制器中的$components数组中。然后你可以在适当的时候$this->YourComponentName->convert_ms_chars()来调用它。

如果您希望每次执行save()时都执行此操作,还可以将其添加到模型beforeSave()回调中。这样,CakePHP将在您保存模型数据时自动清理数据。