如何仅从PHP字符串中提取数字?

如何仅从PHP字符串中提取数字?,php,string,numbers,Php,String,Numbers,假设我有以下字符串: $string = "Hello! 123 How Are You? 456"; 我想将变量$int设置为$int=123456 我该怎么做 例2: $string = "12,456"; 所需: $num = 12456; 谢谢大家! 使用此正则表达式\d <?php $string = "Hello! 123 How Are You? 456"; preg_match_all('!\d!', $string, $matches); echo (int)imp

假设我有以下字符串:

$string = "Hello! 123 How Are You? 456";
我想将变量
$int
设置为
$int=123456

我该怎么做

例2:

$string = "12,456";
所需:

$num = 12456;

谢谢大家!

使用此正则表达式
\d

<?php
$string = "Hello! 123 How Are You? 456";
preg_match_all('!\d!', $string, $matches);
echo (int)implode('',$matches[0]);

您可以使用此方法仅选择文本中的数字

function returnDecimal($text) {
    $tmp = "";  
    for($text as $key => $val) {
      if($val >= 0 && $val <= 9){
         $tmp .= $val
      }
    }
    return $tmp;
}
函数returnDecimal($text){
$tmp=“”;
对于($text as$key=>$val){

如果($val>=0&&$val正确的变量将是:

$string = "Hello! 123 How Are You? 456";
$int = intval(preg_replace('/[^0-9]+/', '', $string), 10);
您可以使用以下选项:

$array = [];

preg_match_all('/-?\d+(?:\.\d+)?+/', $string, $array);
其中,$string是输入的字符串,$array是加载每个数字(不是数字,也包括负值!)并可用于不同的其他操作的位置。


<?php
    $string = "ABC100";
    preg_match_all('!\d+!', $string, $matches);
    $number = $matches[0][0];
    echo $number;
?>
输出:
100

$int=preg_replace('/\D+/',''$string);
可能重复的问题不是问题的重复,问题是关于获取所有/任何(组)数字。以下是解决方案,在不需要数字之前,先解决一个
0
。Shankar,我想拉沙恩的意思是(int)如果以0开头,会将其转换为八进制。或者我完全错了吗?@你是对的,你不能只使用(int)将字符串转换为数字的步骤php@Lashane,您没有得到它,正则表达式从字符串中获取数字,并将其强制转换为
int
不会使其成为八进制。@ShankarDamodaran是的,我错认为javascript将0个前缀数字假定为八进制现在您检查代码中的字符串“hello 0123”…)@ArifHussain是的,它适用于0123,并提供正确的十进制123,如下所示expected@Lashane,因此在这种情况下,Shankar的代码也是正确的,您对此进行了评论。此代码将以错误的形式出现大量数字,例如
abc123456789012345567823123131232
@mike php本质上无法处理如此大的数字,您需要特殊的库对于此问题,效率低且速度慢。此“仅代码”回答不会为此页提供新值或堆栈溢出。请仅在您有唯一且有价值的内容添加到该页时进行回答。更糟糕的是,它只显示所有匹配项中的第一项。