У меня есть строка вроде
$str ='my age is 100';
теперь я хочу отделить 100 сверху строки, как я могу это сделать, используя smarty
Я работаю над Prestashop. благодаря
Если есть только число, вы можете просто удалить все нецифровые символы из строки с регулярным выражением с помощью выражения 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
как и ожидалось.