Почему PHP так сравнивает строку и число?
PHP 8.0
If both operands are numeric strings, or one operand is a number and the other one is a numeric string, then the comparison is done numerically. 
Более ранние версии PHP:
If a string is compared to a number or a numeric string then the string was converted to a number before performing the comparison.
То есть, когда вы в 7.4 сравниваете строку с числом, то строка в любом случае приводится к числу. В 8.0, при сравнении нечисловой строки с числом, число будет приведено к строке.
А дальше у вас, похоже, проблема XY. Вам надо искать не "как сравнить через ==", а как решить исходную задачу, для которой нужно такое сравнение.
$param = "Любой текст";
var_dump($param == (string)(int)$param && $param !== "0");

А если так попробовать?