$re = '/(\d*\.\d*|\d*|x_{\d*}|\(.*?\)+)[\/]+(\(.*?\)|x_{\d*}|\d*\.\d*|\d*)/';
$str = '311/3-31.2/3+x_{3}/4+(3+4)/2+(x_{12}/2+234)/1+9/(3+8)+(5+9/8)/5.6+x_{8}/x_{7}+(3)/m';
$subst = "\\frac{$1}{$2}";
$result = preg_replace($re, $subst, $str);
echo "The result of the substitution is ".$result;
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php