PHP и preg_match Regex для извлечения числа с десятичной дробью из строки - PullRequest
1 голос
/ 23 марта 2012

Здесь довольно простые вещи, пытаясь извлечь число 14.5 из этой строки, используя регулярные выражения и php, но я не могу получить правильный синтаксис. Кроме того, число является динамическим и не всегда может быть десятичным, но цель здесь состоит в том, чтобы попытаться ввести число между словом 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 ]

3 голосов
/ 23 марта 2012

Попробуйте это:

if (preg_match('/Weight: (\d+(\.\d+)?)/', $desc, $matches)) {
    echo $matches[1];
}
1 голос
/ 23 марта 2012

Попробуйте это регулярное выражение:

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

Соответствующий номер будет доступен в $WEIGHT[1].

Если вы не хотите фиксировать . в таких числах, как 123.:

/Weight: ((?:\d+)(?:\.\d+)?)/
0 голосов
/ 02 октября 2014

, если вы ПРОСТО ХОТИТЕ совпадать с целым числом ИЛИ десятичным

 if (preg_match('/^(\d+(\.\d+)?)$/',$num)) echo "$num is integer or decimal";
0 голосов
/ 23 марта 2012
preg_match('<li>Weight: (\d+)\.?(\d+)?.+</li>', // ...

Должен подвох

...