Eliminación de puntuación duplicada.

Las expresiones regulares son una herramienta muy útil para los desarrolladores. Con su ayuda, puede buscar, definir o reemplazar texto, palabras o cualquier otro carácter. El artículo de hoy ha recopilado 15 de las expresiones regulares más útiles que necesitará cualquier desarrollador web.

Introducción a las expresiones regulares

Muchos desarrolladores novatos encuentran que las expresiones regulares son muy difíciles de entender y usar. De hecho, no todo es tan complicado como parece. Antes de saltar directamente a las expresiones regulares, con su código útil y versátil, echemos un vistazo a los conceptos básicos:

Sintaxis de expresiones regulares

Expresión regular Medio
foo La cadena "foo"
^ foo La línea comienza con "foo"
foo $ La línea termina con "foo"
^ foo $ "Foo" aparece solo una vez por línea
a, b o c
cualquier carácter en minúscula
[^ A-Z] cualquier carácter que no esté en mayúsculas
(gif | jpg) Significa tanto "gif" como "jpeg"
+ Uno o más caracteres en minúscula
Cualquier dígito, punto o signo menos
^{1,}$ Cualquier palabra, al menos una letra, número o _
()() wy, wz, xy o xz
(^ A-Za-z0-9) Cualquier carácter (ni un número ni una letra)
({3}|{4}) Significa tres letras o 4 números

Funciones PHP para expresiones regulares

Función Descripción
preg_match () La función preg_match () busca una cadena de acuerdo con un patrón dado, devuelve verdadero si se encuentra la cadena y falso, de lo contrario
preg_match_all () La función Preg_match_all () encuentra todas las apariciones de una cadena con patrón
preg_replace () La función preg_replace () funciona de la misma manera que ereg_replace (), excepto que las expresiones regulares se pueden usar tanto para especificar el patrón de búsqueda como para que la cadena reemplace el valor encontrado.
preg_split () La función preg_split () es la misma que split (), excepto que la expresión regular se puede usar como parámetro para el patrón de búsqueda.
preg_grep () La función preg_grep () busca todos los elementos de la matriz de entrada y devuelve todos los elementos que coinciden con el patrón de expresión regular.
preg_quote () Escapa de los caracteres de expresión regular

Verificación de nombre de dominio

Verificando si la cadena es el nombre de dominio correcto

$ url \u003d "http://komunitasweb.com/"; if (preg_match ("/^(http|https|ftp)://(*(?:.*)+):?(d+)?/?/i", $ url)) (echo "Tu URL está bien . ";) else (echo" URL incorrecta ";)

Resaltado de palabras en texto

Esta es una expresión regular muy útil, puede usarla para encontrar la palabra deseada y resaltarla. Especialmente útil para mostrar resultados de búsqueda.

$ text \u003d "Ejemplo de oración de KomunitasWeb, regex se ha vuelto popular en la programación web. Ahora aprendemos regex. De acuerdo con wikipedia, las expresiones regulares (abreviadas como regex o regexp, con formas plurales regexes, regexps o regexen) se escriben en un formato formal lenguaje que puede ser interpretado por un procesador de expresiones regulares "; $ texto \u003d preg_replace ("/ b (regex) b / i", " 1", $ texto); echo $ texto;

Resaltar los resultados de búsqueda en un blog de WordPress

Como se mencionó en el ejemplo anterior, este ejemplo de código es útil para los resultados de búsqueda y existe una excelente manera de implementar esta función en un blog de wordpress.

Abra su archivo search.php y busque la función the_title (). Reemplácelo con el siguiente código:

Echo $ título;

Ahora, encima de esta línea, agregue este código:

\0", $ título);?\u003e

Guarde el archivo search.php y abra style.css. Agregue la siguiente línea:

Extracto de búsqueda fuerte (fondo: amarillo;)

Recuperar todas las imágenes de un documento HTML

Si alguna vez necesitó obtener todas las imágenes de una página web, este código debería estar allí. Puede crear fácilmente un cargador de imágenes utilizando las funciones cURL

$ imágenes \u003d matriz (); preg_match_all ("/ (img | src) \u003d (" | \\ ") [^" \\ "\u003e] + / i", $ datos, $ medios); desarmado ($ datos); $ datos \u003d preg_replace ("/ (img | src) (" | \\ "| \u003d" | \u003d \\ ") (. *) / i", "$ 3", $ medios); foreach ($ datos como $ url) ($ info \u003d pathinfo ($ url); if (isset ($ info ["extensión"])) (if (($ info ["extensión"] \u003d\u003d "jpg") || ($ info ["extensión"] \u003d\u003d "jpeg") || ($ info ["extensión"] \u003d\u003d "gif") || ($ info ["extensión"] \u003d\u003d "png")) array_push ($ imágenes, $ url);))

Eliminar palabras duplicadas (no distingue entre mayúsculas y minúsculas)

Durante la escritura, ¿las palabras se repiten a menudo? Esta expresión regular te ayudará.

$ texto \u003d preg_replace ("/ s (w + s) 1 / i", "$ 1", $ texto);

Eliminar la puntuación duplicada

Lo mismo, solo para la puntuación. Dile adiós a las comas dobles.

$ texto \u003d preg_replace ("/.+/ i", ".", $ texto);

Buscar etiquetas XML / HTML

Esta es una función simple que toma dos argumentos. La primera es la etiqueta que necesita encontrar y la segunda es una variable que contiene XML o HTML. Nuevamente, esta función es muy conveniente para usar con cURL.

Función get_tag ($ etiqueta, $ xml) ($ etiqueta \u003d preg_quote ($ etiqueta); preg_match_all ("(<".$tag."[^>]*>(.*?). ")", $ xml, $ coincidencias, PREG_PATTERN_ORDER); devolver $ coincidencias; )

Busque etiquetas XHTML / XML con un valor de atributo específico

Esta función es muy similar a la anterior, excepto que puedes darle a la etiqueta el atributo deseado. Por ejemplo, puede encontrar fácilmente

.

Función get_tag ($ atributo, $ valor, $ xml, $ etiqueta \u003d nulo) (if (is_null ($ etiqueta)) $ etiqueta \u003d "\\ w +"; más $ etiqueta \u003d preg_quote ($ etiqueta); $ atributo \u003d preg_quote ($ attr); $ valor \u003d preg_quote ($ valor); $ tag_regex \u003d "/<(".$tag.")[^>] * $ atributo \\ s * \u003d \\ s * "." (["\\"]) $ valor \\\\ 2 [^\u003e] *\u003e (. *?)<\/\\1>/ "preg_match_all ($ tag_regex, $ xml, $ coincidencias, PREG_PATTERN_ORDER); devuelve $ coincidencias;)

Encontrar valores de color hexadecimales

¡Otra herramienta útil para desarrolladores web! Le permite buscar / verificar el valor de color hexadecimal.

$ cadena \u003d "# 555555"; if (preg_match ("/ ^ # (? :(? :( 3)) (1,2)) $ / i", $ string)) (echo "ejemplo 6 exitoso";)

Buscar el título del artículo

Este fragmento de código encontrará y mostrará el texto dentro de las etiquetas. , en la página html.

$ fp \u003d fopen ("http://www.catswhocode.com/blog", "r"); while (! feof ($ fp)) ($ página. \u003d fgets ($ fp, 4096);) $ titre \u003d eregi (" (.*)", $ página, $ regs); echo $ regs; fclose ($ fp);

Analizar registros de Apache

La mayoría de los sitios se ejecutan en el conocido servidor web Apache. Si su sitio es uno de ellos, ¿por qué no utilizar PHP y expresiones regulares para analizar los registros de Apache?

// Registros: servidor web Apache // Accesos exitosos solo a archivos HTML. Útil para contar el número de páginas vistas. "^ ((? # IP de cliente o nombre de dominio) S +) s + ((? # autenticación básica) S + s + S +) s + [((? # fecha y hora) [^]] +)] s +" (?: GET | POST | HEAD) ((? #File) / [^? "] +?. Html?) ?? ((? # Parameters) [^?"] +)? HTTP / + "s + (? # Código de estado) 200s + ((? # Bytes transferidos) [- 0-9] +) s +" ((? # Referrer) [^ "] *)" s + "((? # User agent ) [^ "] *)" $ "// Registros: servidor web Apache // Solo errores 404" ^ ((? # IP del cliente o nombre de dominio) S +) s + ((? # Autenticación básica) S + s + S +) s + [((? # fecha y hora) [^]] +)] s + "(?: GET | POST | HEAD) ((? #file) [^?"] +) ?? ((? # parámetros) [ ^? "] +)? HTTP / + "s + (? # Código de estado) 404s + ((? # Bytes transferidos) [- 0-9] +) s +" ((? # Referrer) [^ "] *)" s + "((? # User agent ) [^ "] *)" $ "

Reemplazo de comillas dobles con comillas tipográficas

Si eres un amante de la tipografía, te encantará esta expresión regular que reemplaza las comillas dobles regulares con comillas tipográficas. Wordpress utiliza una expresión regular similar en el contenido de la página.

Preg_replace ("B" b ([^ "x84x93x94rn] +) b" B ","? 1? ", $ Texto);

Comprobación de contraseña compleja

Esta expresión regular se asegurará de que se ingresen al menos seis caracteres, números, guiones y guiones bajos en el cuadro de texto.

El cuadro de texto debe contener al menos una mayúscula, una minúscula y un número.

"A (? \u003d [-_ a-zA-Z0-9] *?) (? \u003d [-_ a-zA-Z0-9] *?) (? \u003d [-_ a-zA-Z0-9] *?) [-_a-zA-Z0-9] (6,) z "

WordPress: uso de una expresión regular para obtener imágenes de una publicación

Dado que muchos de ustedes son usuarios de WordPress, es posible que necesite un código que le permita obtener todas las imágenes del texto del artículo y mostrarlas.

Para utilizar este código, simplemente péguelo en cualquier archivo de su tema.

publicar Contenido; $ szSearchPattern \u003d "~ ] * /\u003e ~ "; // Ejecuta preg_match_all para tomar todas las imágenes y guardar los resultados en $ aPics preg_match_all ($ szSearchPattern, $ szPostContent, $ aPics); // Verifica si tenemos al menos 1 imagen $ iNumberOfPics \u003d count ($ aPics); if ($ iNumberOfPics\u003e 0) (// Ahora aquí harías lo que necesites hacer con las imágenes // Para este ejemplo, las imágenes solo se muestran para ($ i \u003d 0; $ i< $iNumberOfPics ; $i++) { echo $aPics[$i]; }; }; endwhile; endif; ?>

Generando emoticonos automáticos

Otra característica que se usa en wordpress es reemplazar automáticamente los emoticonos con una imagen sonriente.

$ texte \u003d "Un texto con una carita :-)"; echo str_replace (":-)", " ", $ texte);

Última actualización el 27 de noviembre de 2019 07:10:59 (UTC / GMT +8 horas)

Sintaxis de las etiquetas de apertura y cierre de PHP

Hay cuatro pares diferentes de etiquetas de apertura y cierre que se pueden usar en php. Aquí está la lista de etiquetas.

  • Sintaxis predeterminada
  • Etiquetas abiertas cortas
  • Omita la etiqueta de cierre de PHP al final del archivo

Sintaxis predeterminada

La sintaxis predeterminada comienza con "".

Ejemplo:

Etiquetas abiertas cortas

Las etiquetas cortas comienzan con "". Las etiquetas de estilo corto solo están disponibles cuando están habilitadas en el archivo de configuración php.ini en los servidores.

Ejemplo:

Omita la etiqueta de cierre de PHP al final del archivo

Se recomienda que se omita una etiqueta PHP de cierre en un archivo que contenga solo código PHP para evitar que se produzcan espacios en blanco accidentales o que se agreguen nuevas líneas después de la etiqueta PHP de cierre, que pueden iniciar el almacenamiento en búfer de salida y causar efectos no solicitados.

Ejemplo:

Separación de declaraciones PHP

En PHP, las declaraciones terminan con un punto y coma (;) como C o Perl. La etiqueta de cierre de un bloque de código PHP implica automáticamente un punto y coma, no es necesario tener un punto y coma que termine la última línea de un bloque PHP.

Reglas para la separación de declaraciones

  • un punto y coma
  • Y / O
  • una etiqueta PHP de cierre

Códigos válidos

En el ejemplo anterior, están presentes tanto el punto y coma (;) como una etiqueta PHP de cierre.

En el ejemplo anterior, no hay punto y coma (;) después de la última instrucción, pero hay una etiqueta PHP de cierre.

En el ejemplo anterior, hay un punto y coma (;) en la última instrucción pero no hay una etiqueta PHP de cierre.

Sensibilidad a mayúsculas y minúsculas de PHP

En PHP, las funciones, clases y palabras clave del lenguaje principal definidas por el usuario (por ejemplo, if, else, while, echo, etc.) no distinguen mayúsculas de minúsculas. Por lo tanto, las tres declaraciones de eco en el siguiente ejemplo son iguales.

Ejemplo 1

"); ECHO (" Estamos aprendiendo la distinción entre mayúsculas y minúsculas de PHP
"); EcHo (" Estamos aprendiendo la distinción entre mayúsculas y minúsculas de PHP
"); ?>

Estamos aprendiendo la distinción entre mayúsculas y minúsculas de PHP Estamos aprendiendo la distinción entre mayúsculas y minúsculas de PHP Estamos aprendiendo la distinción entre mayúsculas y minúsculas de PHP

Por otro lado, todas las variables distinguen entre mayúsculas y minúsculas.

Considere el siguiente ejemplo. Solo la primera declaración muestra el valor como $ monto porque $ monto, $ CANTIDAD, $ monto son tres variables diferentes.

Ejemplo - 2

"); echo (" La cantidad es: $ AMOUNT
"); echo (" La cantidad es: $ monto
"); ?>

La cantidad es: 200 La cantidad es: La cantidad es:

Insensibilidad de espacios en blanco de PHP

En general, los espacios en blanco no son visibles en la pantalla, incluidos los espacios, tabulaciones y caracteres de final de línea, es decir, retornos de carro. En PHP, el espacio en blanco no importa en la codificación. Puede dividir una declaración de una sola línea en cualquier número de líneas o número de declaraciones separadas juntas en una sola línea.

Los siguientes dos ejemplos son iguales:

Ejemplo:

"; echo" Su clase es: $ class y Roll No. es $ roll_no ";) student_info (" David Rayy "," V ", 12)?\u003e

Ejemplo: insensibilidad avanzada a los espacios en blanco

"; echo" Su clase es: $ class y Roll No. es $ roll_no ";) student_info (" David Rayy "," V ", 12)?\u003e

El nombre del estudiante es: David Rayy Su clase es: V y Roll No. es 12

Ejemplo: insensibilidad a espacios en blanco con tabulaciones y espacios

En el siguiente ejemplo, los espacios y tabulaciones se utilizan en una operación numérica, pero en ambos casos, $ xyz devuelve el mismo valor.

"; // tabulaciones y espacios $ xyz \u003d 11 + 12; echo $ xyz;?\u003e

PHP: Comentarios de una línea y varias líneas

Comentario de una sola línea

PHP admite las siguientes dos formas diferentes de comentar.

# Este es un comentario de una sola línea.

// Esta es otra forma de comentario de una sola línea.

Ejemplo:

Comentarios de varias líneas

PHP admite comentarios de estilo "C". Un comentario comienza con el par de caracteres / * y termina con el par de caracteres * /.

/ * Esta es una prueba de comentarios múltiples,
y estas líneas serán ignoradas
en el momento de la ejecución * /

Ejemplo:

Los comentarios de varias líneas no se pueden anidar

Primer script PHP

Aquí está el primer script PHP que mostrará "Hello World ..." en el navegador web.

& lt? php echo "Hola mundo ..."; ?\u003e

Las etiquetas le dicen al servidor web que trate todo dentro de las etiquetas como código PHP para ejecutar. El código es muy simple. Utiliza una función PHP incorporada "echo" para mostrar el texto "Hello World ..." en la página web. Todo lo que esté fuera de estas etiquetas se envía directamente al navegador.

Presentación pictórica


Combinando PHP y HTML

La sintaxis PHP es aplicable solo dentro de las etiquetas PHP.

PHP se puede incrustar en HTML y colocar en cualquier parte del documento.

Cuando PHP está incrustado en documentos HTML y PHP analiza este documento, interpretó la sección adjunta con una etiqueta de apertura () de PHP e ignore el resto del documento.

PHP y HTML se ven juntos en el siguiente ejemplo.

Página PHP

Practica aquí en línea:

Cuando el intérprete de PHP analiza el archivo, busca etiquetas que indican dónde comienza y termina el código PHP. Todo lo que esté fuera de un par de etiquetas de apertura y cierre será ignorado por el intérprete (es decir, simplemente se le dará al servidor web tal como está). Por ejemplo, un archivo que se pasa al intérprete de PHP tiene el siguiente código:

Esto será ignorado por el intérprete y simplemente se entregará tal cual, primero al servidor web, que a su vez lo entregará al navegador.

Esto también será ignorado por el intérprete y simplemente se pasará al servidor web tal como está.

Si el archivo contiene solo código PHP o está ubicado al final del archivo, es decir, no hay nada después de él, entonces es preferible omitir la etiqueta de cierre (no especificar). Esto evita agregar espacios en blanco aleatorios después de la etiqueta final de PHP, lo que puede causar efectos no deseados.

PHP también permite el uso de una etiqueta de apertura corta

Caracteres de espacio en blanco

En el código PHP puede utilizar espacios en blanco: espacios, tabulaciones y saltos de línea. El número de espacios en blanco no está limitado y depende de las preferencias del programador, cuyo objetivo principal es crear un texto de programa (código fuente) claro y fácil de leer.

El siguiente ejemplo muestra código PHP que usa espacios en blanco:

El código de ejemplo podría haberse escrito en una sola línea sin usar espacios en blanco, pero este código sería menos legible:

JavaScript está bloqueado en su navegador. ¡Habilite JavaScript para que el sitio funcione!

strip_tags

(PHP 3\u003e \u003d 3.0.8, PHP 4, PHP 5)

strip_tags - Elimina las etiquetas HTML y PHP de una cadena

Descripción

cuerda strip_tags (cadena str [, cadena allowable_tags])

Esta función devuelve la cadena str de la que se han eliminado las etiquetas HTML y PHP. Para eliminar etiquetas, se utiliza un autómata, similar al utilizado en la función fgetss ().

El segundo argumento opcional se puede utilizar para especificar etiquetas que no deben eliminarse.

Comentario: El argumento allowable_tags se agregó en PHP 3.0.13 y PHP 4.0b3. Desde PHP 4.3.0, también se eliminan los comentarios HTML.

Atención

Como strip_tags () no comprueba la exactitud del código HTML, las etiquetas incompletas pueden provocar la eliminación de texto que no está incluido en las etiquetas.

Ejemplo 1. Ejemplo de uso strip_tags ()
$ texto \u003d "

Párrafo.

Un poco más de texto "; echo strip_tags ($ text); echo" \\ n \\ n ------- \\ n "; // no eliminar

Echo strip_tags ($ texto, "

"); // Permitir ,, echo strip_tags ($ texto, " ");

Este ejemplo dará como resultado:

Párrafo. Un poco más de texto -------

Párrafo.

Algo más de texto

Atención

Esta función no cambia los atributos de las etiquetas especificadas en el argumento allowable_tags, incluidos style y onmouseover.

Desde PHP 5.0.0 strip_tags () seguro para procesar datos en forma binaria.

Esta función tiene un inconveniente importante: pegar palabras al eliminar etiquetas. Además, la función tiene vulnerabilidades. Una función alternativa análoga a strip_tags:

c "* - html" sucio "se procesa correctamente cuando se pueden encontrar caracteres en los valores de atributo de la etiqueta< > * - html roto se procesa correctamente * - comentarios, scripts, estilos, PHP, Perl, código ASP, etiquetas de MS Word, CDATA se cortan * - el texto se formatea automáticamente si contiene código html * - protección contra falsificaciones como: "<script\u003e alerta ("hola")script\u003e "* * @param string $ s * @param array $ allowable_tags Matriz de etiquetas que no se cortarán * Ejemplo:" b "- la etiqueta permanecerá con los atributos," "- la etiqueta permanecerá sin atributos * @param bool $ is_format_spaces ¿Formatear espacios y saltos de línea? * El texto de salida (sin formato) es lo más parecido posible al texto de entrada en el navegador. * En otras palabras, convierte inteligentemente texto / html en texto / sin formato. * El texto se formatea solo si se han eliminado las etiquetas. * @Param matriz $ pair_tags matriz de nombres de etiquetas emparejados que se eliminarán junto con el contenido * ver valores predeterminados * @param matriz $ para_tags matriz de nombres de etiquetas emparejados, que se tratarán como párrafos (si $ is_format_spaces \u003d true) * ver valores predeterminados * @return string * * @license http://creativecommons.org/licenses/by-sa/3.0/ * @author Nasibullin Rinat, http: //orangetie.ru/ * @charset ANSI * @version 4.0.14 * / function strip_tags_smart (/ * string * / $ s, array $ allowable_tags \u003d , / * boolean * / $ is_format_spaces \u003d true, array $ pair_tags \u003d array ("script", "estilo", "mapa", "iframe", "conjunto de marcos", "objeto", "subprograma", "co mment "," button "," textarea "," select "), array $ para_tags \u003d array (" p "," td "," th "," li "," h1 "," h2 "," h3 ", "h4", "h5", "h6", "div", "formulario", "título", "pre")) (// return strip_tags ($ s); static $ _callback_type \u003d false; static $ _allowable_tags \u003d array (); static $ _para_tags \u003d array (); # expresión regular para atributos de etiquetas # ¡Procesos correctos HTML sucio y roto en un juego de caracteres UTF-8 de un solo byte o multibyte! static $ re_attrs_fast_safe \u003d "(?!) # declaración, que sigue a una etiqueta # atributos correctos (?\u003e [^\u003e" \\ "] + | (?<=[\=\x20\r\n\t]|\xc2\xa0) "[^"]*" | (?<=[\=\x20\r\n\t]|\xc2\xa0) \"[^\"]*\")* #incorrect attributes [^>] * + "; if (is_array ($ s)) (if ($ _callback_type \u003d\u003d\u003d" strip_tags ") ($ tag \u003d strtolower ($ s); if ($ _allowable_tags) (#etiqueta con atributos if (array_key_exists ($ tag, $ _allowable_tags)) return $ s; #tag sin atributos if (array_key_exists ("<" . $tag . ">", $ _etiquetas_permitidas)) (if (substr ($ s, 0, 2) \u003d\u003d\u003d""; if (substr ($ s, -2) \u003d\u003d\u003d" /\u003e ") return"<" . $tag . " />"; regreso"<" . $tag . ">";)) if ($ tag \u003d\u003d\u003d" br ") return" \\ r \\ n "; if ($ _para_tags && array_key_exists ($ tag, $ _para_tags)) return" \\ r \\ n \\ r \\ n "; return "";) trigger_error ("Tipo de devolución de llamada desconocido" ". $ _callback_type." "!", E_USER_ERROR);) if (($ pos \u003d strpos ($ s, "<")) === false || strpos($s, ">", $ pos) \u003d\u003d\u003d false) # mejora de la velocidad (las # etiquetas no se encuentran return $ s;) $ length \u003d strlen ($ s); # etiquetas no emparejadas (apertura, cierre,! DOCTYPE, espacio de nombres de MS Word) \u003d "~: * +)?) # 1 ". $ Re_attrs_fast_safe."\u003e ~ SxSX "; $ patrones \u003d matriz (" /<([\?\%]) .*? \\1>/ sxSX ", # PHP incrustado, Perl, código ASP" /<\!\\]>/ sxSX ", # bloques CDATA #" /<\!\[ [\x20\r\n\t]* .*? \]>/ sxSX ", #: DESAPARECIDO: etiquetas de MS Word como... "/<\!--.*?-->/ sSX ", # comentarios # Etiquetas de MS Word como"...", # ejecución de código condicional para el tipo de IE" HTML "# ejecución de código condicional para el tipo de IE" HTML"# ver http://www.tigir.com/comments.htm" /<\! (?:--)?+ \[ (?> [^ \\] "\\"] + | "[^"] * "| \\" [^ \\ "] * \\") * \\] (?: -)? +\u003e / sxSX ",); if ($ pair_tags) (# etiquetas emparejadas con contenido: foreach ($ pair_tags as $ k \u003d\u003e $ v) $ pair_tags [$ k] \u003d preg_quote ($ v, "/"); $ patrones \u003d "/<((?i:" . implode("|", $pair_tags) . "))" . $re_attrs_fast_safe . "(? .*? <\/(?i:\\1)" . $re_attrs_fast_safe . "> / sxSX ";) #d ($ patrones); $ i \u003d 0; # protección de bucle $ max \u003d 99; while ($ i< $max) { $s2 = preg_replace($patterns, "", $s); if (preg_last_error() !== PREG_NO_ERROR) { $i = 999; break; } if ($i == 0) { $is_html = ($s2 != $s || preg_match($re_tags, $s2)); if (preg_last_error() !== PREG_NO_ERROR) { $i = 999; break; } if ($is_html) { if ($is_format_spaces) { /* В библиотеке PCRE для PHP \s - это любой пробельный символ, а именно класс символов [\x09\x0a\x0c\x0d\x20\xa0] или, по другому, [\t\n\f\r \xa0] Если \s используется с модификатором /u, то \s трактуется как [\x09\x0a\x0c\x0d\x20] Браузер не делает различия между пробельными символами, друг за другом подряд идущие символы воспринимаются как один */ #$s2 = str_replace(array("\r", "\n", "\t"), " ", $s2); #$s2 = strtr($s2, "\x09\x0a\x0c\x0d", " "); $s2 = preg_replace("/ [\x09\x0a\x0c\x0d]++ | <((?i:pre|textarea))" . $re_attrs_fast_safe . "(? .+? <\/(?i:\\1)" . $re_attrs_fast_safe . "> \\ K / sxSX "," ", $ s2); if (preg_last_error ()! \u003d\u003d PREG_NO_ERROR) ($ i \u003d 999; break;)) # una matriz de etiquetas que no se cortarán if ($ allowable_tags) $ _allowable_tags \u003d array_flip ($ allowable_tags); # etiquetas emparejadas que se tratarán como párrafos si ($ para_tags) $ _para_tags \u003d array_flip ($ para_tags);)) #if # procesamiento de etiquetas if ($ is_html) ($ _callback_type \u003d "strip_tags"; $ s2 \u003d preg_replace_callback ($ re_tags, __FUNCTION__, $ s2); $ _callback_type \u003d false; if (preg_last_error ()! \u003d\u003d PREG_NO_ERROR) ($ i \u003d 999; break;)) if ($ s \u003d\u003d\u003d $ s2) break; $ s \u003d $ s2; $ i ++;) # while if ($ i\u003e \u003d $ max) $ s \u003d strip_tags ($ s); #demasiados ciclos para reemplazar ... if ($ is_format_spaces && strlen ($ s)! \u003d \u003d $ length) (# eliminar espacios duplicados $ s \u003d preg_replace ("/ \\ x20 \\ x20 ++ / sSX", "", trim ($ s)); # eliminar espacios antes y después de nuevas líneas $ s \u003d str_replace (array ("\\ r \\ n \\ x20", "\\ x20 \\ r \\ n"), "\\ r \\ n", $ s); # reemplaza 3 y más líneas nuevas por 2 líneas nuevas $ s \u003d preg_replace ("/ [ \\ r \\ n] (3,) + / sSX "," \\ ) devuelve $ s; )?\u003e

Ver también descripción de la función