2016-12-08 2 views
0

solution trouvée PRESQUE heremots Prestashop Smarty fichier tpl (symboles cyrilliques)

Mais je peux comprendre cette {if $haystack1|strstr:"_thestring_"}Found!{/if}ne fonctionne pas avec des symboles non latins ...

Le problème: je dois vérifier si la chaîne 'терминалы' existe dans la variable $ payment_method.desc de Voici un code Smarty

(The Variable **$payment_method.desc** contain this text 'Оплата наличными через кассы и терминалы'):

{assign "desc" $payment_method.desc} 
{assign "var_1" "терминалы"} 
{if $desc|@mb_stristr:$var_1|@var_dump}Found!{/if} 
{if $desc|@mb_strstr:$var_1|@var_dump}Found!{/if} 
{if $desc|@strstr:$var_1|@var_dump}Found!{/if} 

Le même code fonctionne si vous utilisez des symboles latins.

+0

Bonjour. Avez-vous résolu ce problème? Est-ce que la réponse vous a aidé ?? Salutations – PixelWeb

+0

Nop n'est pas résolu ... pour l'instant j'utilise bidouille sale juste en utilisant des symboles latins qui est similaire à cyrillique. Je compare juste une partie du mot "терминалы" donc "терм" est les mêmes lettres en latin ... – qant

Répondre

1

La déclaration Smarty var utilise le codage interne PHP.

Vous devez vérifier le dernier paramètre de mb_* fonctions liées à l'encodage. Vérifiez ceci: mb_strstr

Ce poste pourrait vous aider aussi: php case-insensitive comparison of russian characters

Si vous êtes sûr que la chaîne a des caractères russes, vous devriez considérer convertir l'encodage « Windows 1251 ».

N'importe quelle fonction PHP peut être appelée depuis Smarty, donc vous pouvez tester avec chacun d'entre eux.

Bonne chance.

+0

Je vérifie comment je peux essayer de passer un autre paramètre à la fonction Smarty si cela est possible. Le russe a l'air bien au format utf-8 donc je ne pense pas que convertir en "Windows-1251" vous aidera ... – qant

+0

Vous pouvez passer plus d'un paramètre à la fonction smarty en utilisant: comme ceci: {$ value | escape: 'htmlall ':' UTF-8 '}. Le russe peut sembler "bon" mais quand comparer les caractères ne correspond pas. – PixelWeb

+0

J'essaye cette partie depuis le début, {$ var: 'htmlall': 'UTF-8'} ... et ce n'est pas de l'aide. – qant