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