192 Shares 2688 views

Práctica PHP: comparación de cadenas

PHP se centra en el buen manejo de la información. La sintaxis de la lengua está representado conjunto totalmente funcional de funciones de comparación, el procesamiento de cadenas, operadores de comparación.

Cualquier algoritmo – una secuencia de decisiones y acciones. Pero antes de tomar una decisión, se necesita algo para compararlo con algo. Línea – el mecanismo de control de algoritmo de mayor capacidad, eficiente y práctico. Line – una variante de la presentación de los datos. Una de datos – este es el tema principal de "atención" de cualquier algoritmo.

la lógica ordinaria "comparación de acción"

En general, la lengua tipado dinámico hace no hay diferencias en los datos, tales como línea de comparación PHP y el número no es muy diferente. Número – que también es una cadena, cuando contiene sólo números, puntos y no hay un solo personaje que no se utiliza para representar números en cualquier forma (notación matemática).

Si el número kontenkatsii combina automáticamente con la línea, sin preguntas y sin errores ocultos, incluso si la función gettype () da el 'número entero' o 'doble'.

Sin embargo, hay una diferencia entre el uso de is_int () y is_numeric (). El primero da la verdad, sólo cuando el parámetro es un número entero, segundo, cuando cualquier número o cadena numérica (tipo de variable es 'cadena', pero comprende todos notación matemática proporcionado).

Este es un ejemplo sencillo – un buen ejemplo de cómo un operadores de comparación de cadenas de PHP ( '==' '===' … '='!) Puede presentar muchas sorpresas. Las variables pueden cambiar su tipo, que no siempre son números, pero casi siempre se pueden llevar a la línea. En un caso extremo – que será una cadena vacía.

Con base en lo anterior, una función de comparación de cadenas PHP es más popular. ¿Qué es exactamente para elegir, para decidir el desarrollador. Un montón de opciones disponibles a las expresiones regulares.

Los límites de la funcionalidad disponible

PHP-comparación de las dos filas es bueno "hacer" strpos función () – el más barato, los fieles y opción práctica. Si el resultado del número de función, entonces es claro que una cadena es igual a otro o de una parte a otra.

Radicalmente opuesto, sino también absolutamente el enfoque correcto – el uso de expresiones regulares.

Si la función $ cResult = scCheckFileName ($ cStr) da 'verdadero', entonces la línea es el nombre del archivo vordovsky. Él tendrá sólo una opción de expansión '.docx' y no hay caracteres en el nombre: sólo letras, dígitos y los caracteres '_', '-'.

La función se puede convertir fácilmente a otros tipos de archivos: $ cPtr = '/^([a-zA-Z…0-9-_]{4,239}).(html|js|css|png|jpg | docx | txt) {1} $ / u'. Esta variante se extiende la línea de exploración descargable gama (por ejemplo, se aplica la comparación de cadenas PHP "para subir archivos a un servidor, sin posibilidad de error de entrada") para html, js, css, …

Utilizando el strpos () y preg_match () – extremos. Ellos no están directamente relacionados con el tema del período de comparación. Pero la pregunta del algoritmo – es una cuestión de usar una combinación de estilo, uso de todas las oportunidades para lograr un resultado fiable y correcta.

PHP funcional: comparación de cadenas

idioma Arsenal cadenas comparación – a, no sólo la función de comparación pura, sino también una combinación de una búsqueda o sustituir directamente. No siempre actuar debe coincidir con la comparación, ya que este último no conduce necesariamente a un cambio en cualquiera de las filas. A menudo, usted tiene que elegir una u otra rama del algoritmo.

Variante normal de PHP: realiza la comparación de cadenas función int strcmp (S1, S2).

El resultado de la función:

  • 0 – línea son iguales;
  • -1 – la primera cadena es menor que la segunda;
  • 1 – la primera más la segunda fila.

En la práctica, esto significa que parte de la primera fila a la segunda, de la que la función de PHP (filas de comparación) decide. Una versión más limitada de strpos (), porque en el último caso, es posible conocer la posición de la entrada.

strcmp () Función – sensible. Si desea comparar la cadena insensible, PHP ofrece su strcasecmp (). La sintaxis es similar.

En la práctica, a menudo se requiere para trabajar no con toda la línea, pero sólo una parte de ella. Para este conjunto de funciones PHP (comparación de cadenas) incluido strncmp (s1, s2, N). El tercer parámetro especifica realizar la comparación sólo N-bytes. El resultado es strcmp similar ().

Arrays, cuerdas y comparar

Estos casi siempre están representados por las cadenas. Si tenemos en cuenta las matrices, objetos o estructuras de datos, son sólo diferentes variantes de combinaciones de unas simples estructuras de cadena.

matrices de cadenas y filas se pueden proporcionar en una forma complementaria. La transformación de la matriz en una implosión función de cadena (array, símbolo), por ejemplo: $ margins1 = implode ( '', $ estilo-> getInnerMargin ()); … el algoritmo / usuario …; $ Margins2 = implosión ( '', $ estilo-> getInnerMargin ()) le permite combinar la totalidad de la posición del objeto en la posición de la cadena.

A continuación, puede realizar la comparación de cadenas de PHP, y en un momento: $ cheque = strcmp ($ margins1, $ margins2) y asegúrese de que el algoritmo o el usuario de que algo ha cambiado (o no). Si se realiza una comparación de la forma habitual, usted tiene que ordenar elementos de la matriz. Se necesita más tiempo y es más complicado.

Objetos y línea

Incluso un uso más espectacular de PHP (comparaciones de cadenas) se puede implementar a través de las ideas orientadas a objetos.

La idea moderna de las instalaciones sugiere que tienen propiedades y métodos. Los primeros son generalmente representados por números, cadenas, matrices y otros objetos. Esta última a menudo incluyen técnicas de grabación (PUT) en la línea de recuperación y de la línea (GET).

A diferencia de las matrices, el objeto hace el trabajo con sus propias propiedades e interactúa con otros objetos. Objeto "competente" en el que sus propiedades son de un valor real para el algoritmo del programa en su conjunto.

Este momento constituye una base y la oportunidad de grabar cuando se grabe una cadena sólo la información necesaria, y en la recuperación de la línea para restaurar todas las propiedades de trabajo en el estado deseado. Por lo general, en cualquier objeto que contiene información importante y de trabajo (tiempo). La aplicación de esta idea le permite ahorrar no sólo la memoria, espacio en disco, el registro de base de datos, sino que también hace que sea posible comparar las medias de las líneas más simples y precisos.

Sintaxis y semántica

PHP está desarrollando de forma dinámica, y su funcionalidad tanto en términos de cadenas que comparan constantemente y mejorado en cuanto a su tratamiento. Sin embargo, nada impide que un desarrollador para mover el centro de gravedad en la zona de la semántica.

Sin lugar a dudas, la funcionalidad es buena, pero su uso puede ser transferido en el significado del código en los objetos. Cuando el algoritmo se presenta como un sistema de interacción entre los objetos, se ve mucho mejor que las comparaciones de secuencias y acciones en secuencia directa, un estilo clásico.