UCWords功能调整

时间:2011-08-31 16:42:03

标签: php magento

我有一个充满产品名称的SAGE200数据库,在大多数情况下,这些产品名称都是以全都大写字母输入的。这些在输入时显示在我们的网站上,这是不雅观的。 我是PHP的新手,但发现了ucwords函数并使用了它,以及strtolower,以便我最终显示正在显示的项目的标题大小写。 这是更好的,但仍然远非理想,因为有些产品需要一些大写字母或单词,因为这是他们正确的命名惯例。

我是否可以通过某种方式对此进行编码,以便将Title Case应用于我的产品名称,以及对我在某处定义的列表进行查找以将所有单词保留为全部大写字母?

这完全在Magento 1.4.0.1中。

也许是翻译文件?

我真的不确定解决这个问题的最佳方式,并且不胜感激。

干杯!

2 个答案:

答案 0 :(得分:0)

如果您已经知道翻译(我假设您已经建议翻译文件),为什么不转换数据库中的产品名称呢?

答案 1 :(得分:0)

一种选择是留下你当然希望大写为大写的字母,并且只将你的ucwords函数大写为单词的开头。你不会使用ucwords。你会用:

$string = preg_replace('/(^|[^a-zA-Z])[a-z]/e', 'strtoupper("$0")', $string);

这将大写任何不在信件后面的字母。

否则,如果你有一个你想要大写的单词列表,我会在使用ucwords之前这样做,因为ucwords永远不会降低字母。它看起来像是:

$string = strtolower($string);
foreach($mywordlist as $word)
    $string = str_replace(strtolower($word), strtoupper($word), $string);
$string = ucwords($string);

注意:我上面使用的preg_replace是我一直使用的而不是ucwords,因为它会在非空格字符的上面加上字。示例:ucwords将tick-tock变为Tick-tock。我的preg_replace把它变成了Tick-Tock。