如何仅从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本质上无法处理如此大的数字,您需要特殊的库对于此问题,效率低且速度慢。此“仅代码”回答不会为此页提供新值或堆栈溢出。请仅在您有唯一且有价值的内容添加到该页时进行回答。更糟糕的是,它只显示所有匹配项中的第一项。