【问题标题】:Compare words in Prestashop Smarty tpl file (Cyrillic symbols)比较 Prestashop Smarty tpl 文件中的单词(西里尔符号)
【发布时间】:2016-12-08 11:17:28
【问题描述】:

几乎找到解决方案here

但据我所知,{if $haystack1|strstr:"_thestring_"}Found!{/if} 不起作用非拉丁符号...

问题:我需要检查 $payment_method.desc 变量中是否存在字符串 'терминалы' 这是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}

如果使用拉丁符号,同样的代码也可以工作。

【问题讨论】:

  • 你好。你解决了这个问题吗??回答对你有帮助吗??问候
  • Nop 没有解决......现在我只使用类似于西里尔文的拉丁符号来使用肮脏的黑客。我只比较单词“терминалы”的一部分,所以“терм”在拉丁语中是相同的字母......

标签: compare smarty prestashop cyrillic


【解决方案1】:

Smarty var 声明使用 PHP 内部编码。

您应该检查与编码相关的mb_* 函数的最后一个参数。检查这个:mb_strstr

这篇文章也可以帮助你:php case-insensitive comparison of russian characters

如果您确定字符串包含俄语字符,则应考虑从“Windows-1251”编码转换。

任何 PHP 函数都可以从 Smarty 中调用,因此您可以使用所有这些函数进行测试。

祝你好运。

【讨论】:

  • 如果可能的话,我会检查如何尝试将其他参数传递给 Smarty 函数。俄语在 utf-8 格式中看起来不错,所以我认为从“Windows-1251”转换为转换不会有帮助...
  • 您可以使用以下方式将多个参数传递给 smarty 函数:{$value|escape:'htmlall':'UTF-8'}。俄语可能“看起来”不错,但比较字符时不匹配。
  • 我从一开始就尝试这部分,{$var:'htmlall':'UTF-8'}... 并没有帮助。
猜你喜欢
  • 2018-02-19
  • 2016-05-10
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 2019-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多