我有一个字符串,我试图只获取当前正在工作的数字。
我的问题是我只想在单词结果之前得到数字并忽略其他所有内容。
这是一个示例字符串:
echo '381,000,000 results 1. something here 12345566778898776655444';
$theContent = preg_replace('/\D/', '', $theContent);
echo $theContent;
如何在单词结果之前获取数字并忽略结果以及之后的所有内容?
答案 0 :(得分:1)
如果你想看到这个:
381
使用
^(\ d *)
但是如果你想看到数字“,”
3.81亿
使用
^([\ d,] *)
答案 1 :(得分:1)
我首先匹配,
和explode()
之后由,
连接起来的所有数字:
$string = '381,000,000 results 1. something here 12345566778898776655444';
$pattern = '/((^|,)([\d]+))*/';
preg_match($pattern, $string, $matches);
$numbers = explode(',', $matches[0]);
var_dump($numbers);
IMO这是最稳定的解决方案。
关于正则表达式模式:它匹配行的序列或,
后跟一个或多个数字字符多次。它使用捕获组()
将数字与,
分开。
答案 2 :(得分:0)
你可以从中得到号码:
$theContent = '381,000,000 results 1. something here 12345566778898776655444';
$array = explode(" ", $theContent);
$wantedArray = [];
foreach ($array as $item) {
if (is_numeric(str_replace(",", "", $item))) {
$wantedArray[] = $item;
}
}
答案 3 :(得分:0)
试试这个:
preg_match_all('!\d+!', $theContent, $matches);
print_r( $matches);