PHP es bastante bueno en el procesamiento de información. La sintaxis del lenguaje está representada por un conjunto completo de funciones para comparar, procesar cadenas y operadores de comparación.
Cualquier algoritmo es una secuencia de elecciones yacción Pero antes de tomar una decisión, debe comparar algo con algo. Las cadenas son el mecanismo más amplio, eficiente y práctico para controlar el algoritmo. Filas: una variante de la representación de datos. Y los datos son el tema principal de "preocupación" de cualquier algoritmo.
En general, un lenguaje de escritura dinámico nohace diferencias especiales en los datos, por ejemplo, en PHP, comparar cadenas y números no es muy diferente. Un número también es una cadena cuando contiene solo números, un punto y no hay un solo carácter que no se use para representar un número en ninguna forma (notación matemática).
En el caso de kontenenatsii, el número se fusiona automáticamente con la cadena sin preguntas innecesarias y sin errores ocultos, incluso si la función gettype () da "entero" o "doble".
Sin embargo, hay una diferencia entre usar una funciónis_int () y is_numeric (). El primero da verdadero cuando el parámetro es solo un número entero, el segundo cuando cualquier número o cadena numérica (la variable es de tipo "cadena", pero contiene todo lo que proporciona la notación matemática).
Este simple ejemplo es un buen ejemplo, como en PHPLos operadores de comparación de cadenas ("==", "===", "! =", ...) pueden dar muchas sorpresas. Las variables pueden cambiar su tipo; no siempre son números, pero casi siempre se pueden convertir en una cadena. En casos extremos, esta será una cadena vacía.
Basado en lo anterior, en PHP la función de comparación de cadenas es la más popular. Cuál elegir, el desarrollador para decidir. Hay muchas opciones disponibles hasta expresiones regulares.
Comparación de PHP de dos líneas buena función "does"strpos () es la opción más barata, verdadera y práctica. Si el resultado de esta función es un número, entonces una línea es inequívocamente igual a otra o una línea se incluye en otra.
El enfoque fundamentalmente opuesto, pero también absolutamente correcto, es el uso de expresiones regulares.
Si la función llama a $ cResult =scCheckFileName ($ cStr) dará "verdadero", por lo que la línea es el nombre del archivo de Word. Solo tendrá una opción de extensión ".docx" y ningún carácter en el nombre: solo letras, números y signos "_", "-".
La función puede rehacerse fácilmente a otratipos de archivos: $ cPtr = "/^([a-zA-Z...0-9-_{{4,239asket).(html|js|css|png|jpg|docx|txt){1►$/ u ". Este tipo de verificación de línea amplía el rango de los cargados (por ejemplo, en la comparación de cadenas PHP se usa "para cargar archivos al servidor, sin ninguna posibilidad de un error de entrada") en html, js, css, ...
Usando strpos () y preg_match () -extremos No están directamente relacionados con el tema de la comparación de términos. Pero la cuestión del algoritmo es la cuestión de aplicar una combinación de estilos, utilizando todas las posibilidades para lograr un resultado confiable y correcto.
El arsenal del lenguaje en comparación con las cuerdas no es solofunciones de comparación puras, pero también una combinación con buscar o reemplazar directamente. No siempre la acción debe coincidir con la comparación, ya que esta última no necesariamente conduce a un cambio en ninguna línea. A menudo, debe elegir una u otra rama del algoritmo.
Variante PHP normal: la comparación de cadenas se realiza mediante la función int strcmp (s1, s2).
Resultado de la función:
En la práctica, esto significa que el primerouna segunda línea, desde la cual la función PHP (comparación de cadenas) toma una decisión. Una versión más limitada de strpos (), ya que en este último caso puede conocer la posición de la entrada.
La función strcmp () distingue entre mayúsculas y minúsculas. Si necesita comparar cadenas que no distinguen entre mayúsculas y minúsculas, PHP sugiere usar strcasecmp (). La sintaxis es similar.
En la práctica, a menudo se requiere que no funcione con todoscadena, pero solo con su parte. Para esto, el conjunto de funciones PHP (comparación de cadenas) incluye strncmp (s1, s2, N). El tercer parámetro le dice que compare solo N-bytes. El resultado es similar a strcmp ().
Los datos casi siempre están representados por filas. Si consideramos matrices, objetos o estructuras de información, estas son simplemente opciones diferentes para combinar estructuras de cadenas más simples.
Las matrices de cadenas y las cadenas pueden serpresentado de manera complementaria. Transformación de una matriz en una cadena usando la función implode (matriz, símbolo), por ejemplo: $ margins1 = implode (",", $ style-> getInnerMargin ()); ... algoritmo / operación del usuario ...; $ margins2 = implode (",", $ style-> getInnerMargin ()) le permite fusionar todas las posiciones del objeto en una línea de posiciones.
Entonces puede hacer una comparación de cadenas PHP y parauna vez: $ check = strcmp ($ margins1, $ margins2) y asegúrese de que el algoritmo o el usuario hayan cambiado algo (o no). Si realiza la comparación de la manera habitual, tendrá que clasificar los elementos de las matrices. Esto lleva más tiempo y se ve más voluminoso.
Un uso aún más efectivo de PHP (comparación de cadenas) se puede realizar a través de ideas orientadas a objetos.
Vista moderna de los objetos.sugiere sus propiedades y métodos. Los primeros generalmente están representados por números, cadenas, matrices y otros objetos. El segundo a menudo incluye métodos para escribir (poner) en una cadena y restaurar desde una cadena (get).
A diferencia de las matrices, un objeto funciona conSus propiedades e interactúa con otros objetos. El objeto es "competente" en lo que sus propiedades son de importancia real para el algoritmo, el programa en su conjunto.
Este momento proporciona la base y la oportunidad pararegistros para registrar solo la información necesaria en la cadena, y al restaurar desde la cadena, restaurar todas las propiedades de trabajo al estado deseado. Por lo general, en cualquier objeto hay información significativa y operativa (temporal). La implementación de tal idea no solo ahorra memoria, espacio en disco, registros de la base de datos, sino que también permite comparar cadenas con medios más simples y precisos.
PHP se está desarrollando dinámicamente y su funcionalidad como enEl plan para comparar cadenas y en relación con su procesamiento se mejora constantemente. Sin embargo, nada impide que el desarrollador mueva el centro de gravedad al campo de la semántica.
Claro, la funcionalidad es buena, pero esel uso se puede transferir a la parte semántica del código, a los objetos. Cuando un algoritmo se presenta como un sistema de interacción de objetos, se ve mucho mejor que una secuencia de comparaciones y acciones en un estilo directo, secuencial y clásico.