diff --git a/internal/blackbox/blackbox.go b/internal/blackbox/blackbox.go
index 50cfb1d..1cb7e1b 100644
--- a/internal/blackbox/blackbox.go
+++ b/internal/blackbox/blackbox.go
@@ -43,8 +43,8 @@ var defaultPaths = []string{
}
var (
- poweredByRe = regexp.MustCompile(`PHP/(\d+\.\d+\.\d+)`)
- versionRe = regexp.MustCompile(`PHP Version (\d+\.\d+\.\d+)`)
+ poweredByRe = regexp.MustCompile(`PHP/(\d+\.\d+(\.\d+)?)`)
+ versionRe = regexp.MustCompile(`PHP Version (\d+\.\d+(\.\d+)?)`)
phpinfoRow = regexp.MustCompile(`(?s)
]*class="e"[^>]*>(.*?) | \s*]*class="v"[^>]*>(.*?) | `)
tagRe = regexp.MustCompile(`(?s)<[^>]+>`)
)
diff --git a/internal/phpver/phpver.go b/internal/phpver/phpver.go
index 8ee1490..40f9d53 100644
--- a/internal/phpver/phpver.go
+++ b/internal/phpver/phpver.go
@@ -29,7 +29,7 @@ func (v Version) Less(o Version) bool {
}
}
-var verRe = regexp.MustCompile(`(\d+)\.(\d+)\.(\d+)`)
+var verRe = regexp.MustCompile(`(\d+)\.(\d+)(\.(\d+))?`)
// Parse extracts a version from a string such as "PHP 8.3.35 (cli)".
func Parse(s string) (Version, bool) {
@@ -39,7 +39,10 @@ func Parse(s string) (Version, bool) {
}
ma, _ := strconv.Atoi(m[1])
mi, _ := strconv.Atoi(m[2])
- pa, _ := strconv.Atoi(m[3])
+ pa := 0
+ if m[3] != "" {
+ pa , _ = strconv.Atoi(m[3])
+ }
return Version{Major: ma, Minor: mi, Patch: pa}, true
}
diff --git a/internal/phpver/phpver_test.go b/internal/phpver/phpver_test.go
index 7176088..a5242f0 100644
--- a/internal/phpver/phpver_test.go
+++ b/internal/phpver/phpver_test.go
@@ -17,6 +17,8 @@ func TestAssess(t *testing.T) {
{"8.5.12", StatePatched},
{"8.1.29", StateEOL},
{"7.4.33", StateEOL},
+ {"7.0.0", StateEOL},
+ {"7.0", StateEOL},
{"8.6.0", StateUnknown},
}
for _, c := range cases {