在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']);
}
更不用说我需要在几个控制器上复制它 有没有更好的方法来解决这个问题?
谢谢,
三通
答案 0 :(得分:0)
代码组织 - 如果它是一个库方法(即你将在许多控制器中使用的东西),你应该考虑将它放在其他地方(一个常用的文件),而不是让它多个控制器中的相同代码。
功能需求 - 据我所知,这几乎就是这样做的。你可以将它压缩成一行,但最终你要替换字符串中的字符;使用字符串替换方法是如何完成的。
答案 1 :(得分:0)
除了slifty的评论之外,在CakePHP中执行此操作的最佳方法是创建一个包含convert_ms_chars
方法的组件。
然后,您只需将该组件添加到您想要使用它的每个控制器中的$components
数组中。然后你可以在适当的时候$this->YourComponentName->convert_ms_chars()
来调用它。
如果您希望每次执行save()
时都执行此操作,还可以将其添加到模型beforeSave()
回调中。这样,CakePHP将在您保存模型数据时自动清理数据。