Это похоже на работу, для которой хорошо подходят регулярные выражения.
Например:
if (preg_match('/\d+(?:\.\d+)*/', $subject, $regs)) {
$result = $regs[0];
} else {
$result = "";
}
Объяснение:
\d+ # Match one or more digits
(?: # Try to match...
\. # a dot
\d+ # and one or more digits...
)* # zero or more times.
Это также соответствует одиночным номерам версий, таким как «Acrobat Reader 9»;если вы не хотите этого и вам требуется хотя бы одна точка, просто используйте +
вместо *
: /\d+(?:\.\d+)+/
Или вы можете использовать привязку границы слова чтобы убедиться, что регулярное выражение никогда не совпадает с таким словом, как "Dots4You": /\d+(?:\.\d+)*\b/