Hay otras formas de buscar un elemento en una cadena sin necesidad de recurrir al uso de expresiones regulares. Por cierto, hay otras formas de comprobar que el número contenga decimales.
Código PHP:
Ver original//El número a evaluar
$numero = 43.50;
//Compruebo si el número es igual al entero del mismo
echo $numero == (int) $numero ? "No contiene decimales" : "Contiene decimales";
//Tomo el segundo decimal luego del punto decimal
/*
Si no se encuentra una longitud de caracteres para la posición del segundo decimal
Entonces el segundo decimal es un cero, caso contrario, es un número distinto a cero
Cabe recordar que 5.20 y 5.2, valen lo mismo, por eso se toma como si existiera
un cero aún cuando no se haya colocado uno a la derecha del cero
El siguiente mensaje se mostrará si y sólo si el número contiene decimales
*/
if ($numero != (int) $numero)
echo strlen($decimales) === 0 ?
"El segundo decimal es cero" : "El segundo decimal no es cero";
Los resultados que obtendría, son los siguientes:
Código HTML:
Ver originalContiene decimales
El segundo decimal es cero
Si en lugar de 43.50, tuviera el 82.54, los resultados serían los siguientes:
Código HTML:
Ver originalContiene decimales
El segundo decimal no es cero
Si en lugar de 82.54, tuviera el 41.00, los resultados serían los siguientes:
No se mostró el segundo mensaje porque el número no contiene decimales, por lo tanto, no se puede comprobar si el segundo decimal es un cero, pues 41.00 vale lo mismo que 41. Anteponiendo
(int) al número, estoy haciendo un
cast, lo cual genera que el valor sea convertido de forma temporal al tipo de dato especificado, que en este caso es integer o entero.
Saludos