我想从存储在数据库中的字符串中提取一个数字(4个位置)。
e.g。 “氡山宾馆(2340米)” 怎么做? 这个数字有可能是2.340m
答案 0 :(得分:4)
<?php
//$string = 'Mountain guesthouse (2340m) in Radons';
//preg_match('#([0-9]+)m#is', $string, $matches);
//$peak = number_format($matches[1], 0, ',', '.');
//EDIT
$string = 'Mountain guesthouse (23.40m) in Radons';
$preg_match('#([0-9\.]+)m#is', $string, $matches);
$peak=$matches[1];
echo $peak . 'm'; # 23.40m
?>
答案 1 :(得分:2)
preg_match('/\d\.?\d{3}/', $text, $matches);
匹配一个数字后跟一个可选点和另外3个数字。
php > $text = "Mountain guesthouse (2340m) in Radons";
php > preg_match('/\d\.?\d{3}/', $text, $matches);
php > print_r($matches);
Array
(
[0] => 2340
)
答案 2 :(得分:1)
你的问题有点模糊。我总是这个数字的一部分吗?你想要提取它吗?号码是否总是由4位数组成?下面匹配任何整数或浮点整数,没有科学记数法。
if (preg_match('/[0-9]*\.?[0-9]+/', $subject, $regs)) {
$result = $regs[0];
#check if . is present and if yes length must be 5 else length must be 4
if (preg_match('/\./', $result) && strlen($result) == 5) {
#ok found match with . and 4 digits
}
elseif(strlen($result) == 4){
#ok found 4 digits without .
}
}
答案 3 :(得分:0)
(编辑自@ webarto的回答)
<?php
$string = 'Mountain guesthouse (23.40m) in Radons';
preg_match('#([0-9\.]+)m#is', $string, $matches);
$peak = $matches[1];
echo $peak . 'm'; # 2.340m
?>