带有重音的字符在可配置产品中计为两个字符

时间:2012-08-28 14:28:52

标签: magento

我们销售的可配置产品需要具有字符限制的文本字段(我们销售带有客户名称的个性化手镯)。

因此,我们在产品页面上创建了一个限制为15个字符的文本字段。

如果我把这个feld放在例如:“abcdefghijklmno”(这是15个字母)中,它就完美了。

但是,如果我把“abcdéfghijklmno”(仍然是15个字母,但“e”为急性),它就行不通,它说“请指定产品选项”。

经过几次测试后,我发现带有重音的字母被计为2个字符。

如何避免此错误?

3 个答案:

答案 0 :(得分:1)

  

ÉÉÉ

使用html_entity_decode($string);

换行变量
$example = html_entity_decode("abcdéfghijklmno");
print_r($example);

尝试学习htmlentitieshtml_entity_decode

如果你想替换所有急性,

在指定产品选项之前,您必须创建一个列表并str_replace它 url_encode

答案 1 :(得分:0)

这很可能是字符编码问题 - 例如UTF-8与Latin1。

您没有提到您正在使用的编程语言。猜测它是一个网络应用程序并且它是PHP的可能性,您可以使用mb_strlen(计算字符)而不是strlen(计算字节)。

如果它不是PHP,其他编程语言具有相似的功能来计算字符而不是字节。

答案 2 :(得分:0)

我也找到了解决方案:

您必须编辑此文件:app / code / core / Mage / Catalog / Model / Product / Option / Type / Text.php

替换(第49行附近):

if (strlen($value) == 0 && $option->getIsRequire() && !$this->getProduct()->getSkipCheckRequiredOption()) {
            $this->setIsValid(false);
            Mage::throwException(Mage::helper('catalog')->__('Please specify the product\'s required option(s).'));
        }
        if (strlen($value) > $option->getMaxCharacters() && $option->getMaxCharacters() > 0) {
            $this->setIsValid(false);
            Mage::throwException(Mage::helper('catalog')->__('The text is too long'));

by:

if (mb_strlen($value,'UTF-8') == 0 && $option->getIsRequire() && !$this->getProduct()->getSkipCheckRequiredOption()) {
            $this->setIsValid(false);
            Mage::throwException(Mage::helper('catalog')->__('Please specify the product\'s required option(s).'));
        }
        if (mb_strlen($value,'UTF-8') > $option->getMaxCharacters() && $option->getMaxCharacters() > 0) {
            $this->setIsValid(false);
            Mage::throwException(Mage::helper('catalog')->__('The text is too long'));