Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在smarty中将数字与字符串分开_Php_Smarty_Prestashop - Fatal编程技术网

Php 在smarty中将数字与字符串分开

Php 在smarty中将数字与字符串分开,php,smarty,prestashop,Php,Smarty,Prestashop,我有一根像 $str ='my age is 100'; 现在我想从上面的字符串中分离出100,如何使用smarty来分离呢 我在普雷斯塔肖普工作。 谢谢假设字符串中的数字后面或前面没有逗号、括号,只有空格,您可以使用: {assign var="str" value="my age is 100 Include Couple Name (max 21 letters)"} {assign var="ar" value= " "|explode:$str} {foreach $ar as

我有一根像

$str ='my age is 100';
现在我想从上面的字符串中分离出100,如何使用smarty来分离呢

我在普雷斯塔肖普工作。
谢谢

假设字符串中的数字后面或前面没有逗号、括号,只有空格,您可以使用:

{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}

正如预期的那样。

如果只有一个数字,您可以使用以下正则表达式从字符串中删除所有非数字字符:

第一个示例打印100,第二个示例打印21。但是,对于具有不同数字的字符串,它将无法正常工作(例如,“我有2头牛和1只兔子”将返回21)


综上所述,如果需要在代码中使用数字,我建议您不要从文本字符串中提取数字,因为它容易出错。最好声明一个单独的变量,而不是

这背后有什么逻辑吗?否则我只建议您使用$var='100';是的,我从管理员那里得到这个值,我想把这个数字分开,因为我想在其他地方使用这个数字。我的意思是,它总是那个句子,它总是字符串中的最后一个,这个数字在你的字符串中有什么逻辑吗。。看@Naruto我的字符串像是包含两个名字(最多21个字母)。现在我想从字符串中分离出21个。这次你明白了吗?@user3910051我的解决方案对你有用吗?我看到你接受了它,后来又不接受了
NUMBERS:
100
21
{$str|regex_replace:"/[^0-9]/":""}