PHP和preg_match正则表达式从字符串中删除带小数的数字

时间:2012-03-23 13:59:19

标签: php regex preg-match decimal

这里非常基本的东西,尝试使用正则表达式和PHP从这个字符串中拉出数字 14.5 ,但我似乎无法使语法正确。此外,该数字是动态的,可能并非总是十进制,但此处的目标是尝试在单词Weight:</li>之间拉一个数字:

  <ul>
    <li>Manufacturer: something</li>
    <li>Model: 1216D101</li>
    <li>Condition: New</li>
    <li>Dimensions: 12" x 16"</li>
    <li>Sold by the Dozen</li>
    <li>Weight: 14.5 Lbs.</li>
  </ul>

这就是我到目前为止所做的一些尝试,但仍然不断下降:

if (preg_match("/\Weight:\(\d+)\.(\d*?)\<\/li>/", $desc, $WEIGHT) == true)
    {  echo $WEIGHT[0];  }

4 个答案:

答案 0 :(得分:3)

试试这个:

if (preg_match('/Weight: (\d+(\.\d+)?)/', $desc, $matches)) {
    echo $matches[1];
}

答案 1 :(得分:1)

试试这个正则表达式:

/Weight: ((?:\d+)(?:\.\d*)?)/

匹配的号码将在$WEIGHT[1]

中提供

如果您不想捕获.等数字中的123.

/Weight: ((?:\d+)(?:\.\d+)?)/

答案 2 :(得分:0)

preg_match('<li>Weight: (\d+)\.?(\d+)?.+</li>', // ...

应该诀窍

答案 3 :(得分:0)

如果您只想匹配数字整数或小数

 if (preg_match('/^(\d+(\.\d+)?)$/',$num)) echo "$num is integer or decimal";