Отдельное число от строки в smarty

У меня есть строка как

$str ='my age is 100';

теперь я хочу отделить 100 строк сверху, как я могу это сделать, используя smarty

Я работаю над Prestashop. Спасибо

2 ответа

Решение

Если есть только число, вы можете просто удалить все нечисловые символы из строки с помощью регулярного выражения с regex_replace:

{$str|regex_replace:"/[^0-9]/":""}

Это напечатает 100 для первого примера и 21 для второго. Однако он не будет работать нормально для строк с разными номерами (т.е. "у меня 2 коровы и 1 кролик" вернет 21).

Тем не менее, я советую вам не извлекать число из текстовой строки, если вам нужно использовать его в своем коде, так как оно подвержено ошибкам. лучше объявить отдельную переменную, а не

Предполагая, что за числами в строке не следуют или перед ними не стоит запятая, скобки, а только пробелы, вы можете использовать:

{assign var="str" value="my age is 100 Include Couple Name (max 21 letters)"}

{assign var="ar" value= " "|explode:$str}

{foreach $ar as $a}
    {if $a|is_numeric}
        {append var="numbers" value=$a}
    {/if}
{/foreach}

NUMBERS:<br />
{foreach $numbers as $n}
    {$n}<br />
{/foreach}

Это даст вывод:

NUMBERS:
100
21

как и ожидалось.

Другие вопросы по тегам