CakePHP - 替换 Microsoft Word 字符

问题描述 投票:0回答:2

在 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恤

php cakephp
2个回答
0
投票

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

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


0
投票

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

convert_ms_chars
方法的组件。

然后您只需将该组件添加到您想要使用的每个控制器中的

$components
数组中即可。然后您可以在适当的情况下通过执行
$this->YourComponentName->convert_ms_chars()
来调用它。

如果您想每次执行

save()
时都执行此操作,您还可以将其添加到模型
beforeSave()
回调中。这样,当你保存 Model 的数据时,CakePHP 会自动清理你的数据。

© www.soinside.com 2019 - 2024. All rights reserved.