Buenas sasori11
Hay varias formas de resolver este problema
Puedes resolverlo con las funciones para cadenas explicadas en este curso de php:
http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=70&Itemid=193. En las entregas CU00821B y CU00828B y CU00829B se habla de funciones para cadenas. Dada la cadena 3x+45x-33+4x podrías ir determinando las posiciones en que aparecen los símbolos + y - e ir introduciendo los resultados en un array. Luego harías la suma de elementos en el array para aquellos números que fueran + y la resta para números que fueran -. Antes tendrías que usar str_replace para eliminar las x.
Otra forma sería usar explode
http://php.net/manual/es/function.explode.php para dividir la cadena en fragmentos delimitados por + y delimitados por -. Una vez tengas por separado ambos, usar str_replace para eliminar los símbolos y las x. Finalmente sumar los valores con + y restar los valores con -.
Otra forma sería usar expresiones regulares
http://php.net/manual/es/reference.pcre.pattern.syntax.php. Tendrías que definir un patrón formado por el símbolo más seguido de cualquier cantidad de números y almacenar todas las coincidencias en un array. A este añadirle cualquier serie de números no precedida de símbolo (que correspondería al inicio de la cadena que no lleva símobolo). Hacer lo mismo para cualquier serie de números precedida del símbolo -. Finalmente realizar la suma de todas las coincidencias + y todas las coincidencias -.
Todavía pueden plantearse otras formas.
Salu2