Довольно базовый материал здесь, пытаясь вытащить номер 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]; }
Попробуйте это регулярное выражение:
/Weight: ((?:\d+)(?:\.\d*)?)/
Соответствующий номер будет доступен в $WEIGHT[1]
.
Если вы не хотите захватывать .
в таких числах, как 123.
.:
/Weight: ((?:\d+)(?:\.\d+)?)/
Попробуй это:
if (preg_match('/Weight: (\d+(\.\d+)?)/', $desc, $matches)) { echo $matches[1]; }
preg_match('<li>Weight: (\d+)\.?(\d+)?.+</li>', // ...
Должно к трюку
если вы просто хотите соответствовать целому числу или десятичному значению
if (preg_match('/^(\d+(\.\d+)?)$/',$num)) echo "$num is integer or decimal";