У вас есть ужасный совет с вашим дубликатом. Вот более безопасный вариант eval, который на самом деле приведет к результату:
$str = "0>0.1";
if (preg_replace('/^(\d+\.?\d*)([><])(\d+\.?\d*)$/e', "$1 $2 $3", $str))
{
Обратите внимание, что он по-прежнему будет возвращать true для недопустимых строк, таких как "1>2b"
. Для этого вам понадобится совпадение и отдельная оценка выражения. (Написание искусственного мини-парсера здесь не сложно, но, очевидно, излишне для вашего вопроса.)