1

文字数制限付きのテキスト フィールドを必要とする設定可能な製品を販売しています (お客様の名前が入ったパーソナライズされたブレスレットを販売しています)。

そのため、製品ページに 15 文字制限のテキスト フィールドを作成しました。

たとえば、このフィールドに「abcdefghijklmno」(15文字)を入力すると、完全に機能します。

しかし、「abcdéfghijklmno」(これはまだ 15 文字ですが、「e」は鋭角です)を入力すると、機能せず、「製品オプションを指定してください」と表示されます。

いくつかのテストの後、アクセント付きの文字は 2 文字としてカウントされることがわかりました。

このエラーを回避するにはどうすればよいですか?

4

3 に答える 3

1

これは、文字エンコードの問題である可能性が最も高いです。たとえば、UTF-8とLatin1の違いです。

使用しているプログラミング言語については言及していません。これはWebアプリであり、PHPである可能性が高いと推測すると、 (バイトをカウントする)の代わりに(文字mb_strlenをカウントする)を使用できる可能性があります。strlen

PHPでない場合、他のプログラミング言語には、バイトではなく文字をカウントする同様の関数があります。

于 2012-08-28T14:44:49.677 に答える
0

えええ

変数をラップしますhtml_entity_decode($string);

$example = html_entity_decode("abcdéfghijklmno");
print_r($example);

htmlentitieshtml_entity_decodeを学習してみてください

すべての急性のものを交換したい場合は、

製品オプションurl_encodeを指定する前に、リストを作成して str_replace する必要があります

于 2012-08-28T14:40:07.163 に答える
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')->__('製品に必要なオプションを指定してください。'));
        }
        if (strlen($value) > $option->getMaxCharacters() && $option->getMaxCharacters() > 0) {
            $this->setIsValid(false);
            Mage::throwException(Mage::helper('catalog')->__('テキストが長すぎます'));

に :

if (mb_strlen($value,'UTF-8') == 0 && $option->getIsRequire() && !$this->getProduct()->getSkipCheckRequiredOption()) {
            $this->setIsValid(false);
            Mage::throwException(Mage::helper('catalog')->__('製品に必要なオプションを指定してください。'));
        }
        if (mb_strlen($value,'UTF-8') > $option->getMaxCharacters() && $option->getMaxCharacters() > 0) {
            $this->setIsValid(false);
            Mage::throwException(Mage::helper('catalog')->__('テキストが長すぎます'));
于 2012-08-28T16:15:12.730 に答える