Comentarios intrépidos php. Sistema de comentarios simple usando AJAX. Sintaxis de comentario de php: comentario de una sola línea

Una vez escribí sobre. Entonces, solo consideramos allí " avaro"representantes. Sin embargo, no siempre sus " codicia"Nos ayuda, muchas veces duele. Un poco más abajo mostraré un ejemplo donde se puede ver claramente lo que hacen a veces, y también mostraré cómo reducir su ardor y hacer los cuantificadores de repetición son "perezosos".

Veamos un ejemplo sencillo y ya clásico:

$cadena = "Pequeña línea C atrevido selección.";
.*<\/b>
echo $resultado_cadena;
?>

Tal vez usted está esperando algo como esto: Pequeño bold_highlight aquí con bold_highlight aquí". Es decir, simplemente reemplazando el contenido dentro de la etiqueta<b> a la cadena que especificamos junto con la etiqueta misma. Sin embargo, esto no es del todo cierto, ya que aquí es donde " codicia de cuantificadores". Y como resultado, el reemplazo no estaba dentro de cada etiqueta<b>, pero desde la primera etiqueta de apertura hasta la última etiqueta de cierre. Esto es lo que es la codicia.

A continuación se explica cómo escribir este código para que el reemplazo ocurra de la manera que queremos:

$cadena = "Pequeña línea C atrevido selección.";
$resultado_str = preg_replace("/ .*?<\/b>/i", "bold_highlight_here", $cadena);
echo $resultado_cadena;
?>

Todo lo que hemos cambiado es la expresión regular después del cuantificador de repetición " .* "signo de interrogación, que es sólo hace que el cuantificador sea "perezoso". Ahora el resultado será: " Un pequeño bold_highlight aquí con un bold_highlight aquí. que es lo que estábamos tratando de lograr.

Realmente espero que entiendas el problema. cuantificadores de "codicia" y entender cómo funcionan. Y también me di cuenta de cómo esto se puede arreglar con un simple letrero " ? ". Este tema es realmente importante, y una gran cantidad de recién llegados a las expresiones regulares cometen los mismos errores relacionados con "codicia" de cuantificadores de repetición, así que si aún no se ha dado cuenta de todo el significado hasta el final, vuelva a leer el artículo.

25.04.2017


¡Hola!
¡Seguimos aprendiendo los conceptos básicos de PHP desde cero!
En esta lección te diré qué es un comentario en PHP y en la práctica intentaremos escribir tu comentario en el código. Pero eso no es todo. También quiero decirte cómo comentar el código y por qué debería hacerse.

¿Qué es un comentario enPHP
Comentar enPHP es una sugerencia de desarrollador de php para una orientación rápida en el código, así como para la edición.

Un comentario en PHP no es visible para el usuario que abrió la página web para verlo. Incluso si el usuario decide buscar fuente página, el comentario aún no será visible, ya que todos los archivos php.

comentario de código PHP

Hay 2 tipos de comentarios para el código PHP:

→ de una sola línea
→ multilínea

⇒ Comentario de una sola línea para PHP
Para un comentario de una sola línea, use los caracteres "//" o "#"

Después de estos caracteres, todo lo escrito en una línea será ignorado y tratado como un comentario.

Subscribe to update"; # subscribe (esto es un comentario) ?>


Suscríbete para actualizar

⇒ Comentario de varias líneas para PHP
Un comentario de varias líneas para PHP comienza con "/*" y termina con "*/".
Cualquier cosa entre estos caracteres será ignorada y tratada como un comentario.
Se utiliza un comentario de varias líneas si hay varias líneas en la entrada.

En la pantalla, solo verás el siguiente texto:

Hola lectores del blog - sitio !!!

PD.: Siempre comenta tu código. Si cree que recordará todo lo que hizo en el código en 1 o 2 años, está equivocado, la posibilidad es muy pequeña. Incluso si recuerdas, tendrás que pasar mucho tiempo estudiando: qué, dónde y por qué ...
Haga que el futuro sea placentero para usted: comente el código y luego se dirá "¡¡¡GRACIAS!!!".
Deja un comentario en el código, te tomará 1 minuto de tu tiempo, pero te ahorrará un día entero en el futuro.

Comentar el código PHP

Digamos que escribió un código php, pero por alguna razón necesita eliminar 2 líneas del código.
No tengo prisa por eliminar algo del código, especialmente si es código php, mejor lo comento. Y de repente será necesario devolver el código. Es más fácil descomentar que escribir código de una forma nueva.

Cómo comentar el código enPHP
Un ejemplo con un comentario de una sola línea:

Suscríbete para actualizar"; ?>

Un ejemplo con un comentario de varias líneas.

Paso 1 - XHTML

Primero, veamos el marcado de comentarios. código dado generado por PHP con clase Comentario .

demostración.php

Nombre de usuario
30 de junio de 2010

Texto del comentario

división avatar contiene un enlace (si el usuario ingresó la URL correcta al publicar el comentario) y la imagen del avatar que obtenemos de gravatar.com. Volveremos a generar el marcado en el paso de PHP. Al final sigue división nombre división hora y comentario de texto.

Otro elemento importante en XHTML es el formulario de comentarios. ella envía con PUBLICAR. Se deben completar todos los campos excepto la URL.

demostración.php

Añadir un comentario

El formulario se envía mediante AJAX. La comprobación se realiza en segundo plano. enviar.php. Cada campo tiene un elemento correspondiente. etiqueta, con conjunto de atributos por .

Paso 2 - PHP

PHP maneja la comunicación con la base de datos. datos mysql y genera el marcado para el comentario. También obtiene el final de la solicitud AJAX e inserta los datos del comentario en la tabla. comentarios.

demostración.php

/* / Selecciona todos los comentarios y llena la matriz de $comentarios con objetos */ $comentarios = matriz(); $resultado = mysql_query("SELECCIONAR * DESDE comentarios ORDENAR POR id ASC"); while($fila = mysql_fetch_assoc($resultado)) ( $comentarios = nuevo Comentario($fila); )

Consulta MySQL, seleccione todos los registros de la tabla y complete la matriz $comentarios objetos de clase comentario. Esta matriz se genera aún más cuando se ejecuta el script.

demostración.php

/* / Imprime comentarios uno por uno: */ foreach($comentarios como $c)( echo $c->markup(); )

Cada comentario tiene un método. margen(), que genera el código HTML correcto, listo para mostrarse en la página. Las siguientes son las definiciones de clase y método.

La clase recibe una fila de la base de datos (obtenida usando mysql_fetch_assoc()) y almacenarlo en una variable $datos. Sólo está disponible para el método de clase.

comentario.clase.php - Parte 1

class Comment ( private $data = array(); public function __construct($row) ( /* / Constructor */ $this->data = $row; ) public function markup() ( /* / Este método genera marcado XHTML para */ // Establezca un alias para evitar escribir $this->data cada vez: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"] ) ( // Si se ingresó una URL al agregar un comentario, // determine las etiquetas de enlace de apertura y cierre $link_open = ""; $link_close = ""; ) // Convierta la hora a formato UNIX: $d["dt" ] = strtotime ($d["dt"]); // Necesario para establecer la imagen predeterminada: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]) ."/img/default_avatar.gif"; devolver "
".$enlace_abierto". ".$enlace_cerrar".
".$enlace_abierto.$d["nombre"].$enlace_cerrado".
".date("d M Y",$d["dt"])."

".$d["cuerpo"]".

"; }

El script usa gravatar para representar el avatar en los comentarios. Gravatar es un servicio muy útil que empareja un avatar con una dirección de correo electrónico. La imagen del avatar se puede obtener fácilmente pasando la función codificada md5() su dirección de correo electrónico en gravatar.com.

El script determina la URL en la que se ejecuta y determina la dirección exacta de la imagen. predeterminado_avatar.gif. Esta imagen se transmite junto con el hash md5 y, si no se encuentra ningún avatar para la dirección de correo electrónico proporcionada, se mostrará una imagen alternativa.

comentario.clase.php - Parte 2

función estática pública validar(&$arr) ( /* / Este método se usa para validar los datos enviados a través de AJAX. // Devuelve verdadero/falso dependiendo de la validez de los datos, y llena / la matriz $arr, que se pasa como parámetro con datos o */ $errores = matriz(); $datos = matriz(); // Use la función filter_input introducida en PHP 5.2.0 if(!($data["email"] = filter_input(INPUT_POST ,"email ",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Por favor ingrese un correo electrónico válido."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL) )) ( // Si se ingresó una URL no válida en el campo URL, // actuar como si no se hubiera ingresado ninguna URL: $url = ""; ) // Usar un filtro con una función de devolución de llamada: if(!($data[ "cuerpo"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["body"] = "Por favor ingrese el texto del comentario."; ) if(!( $datos["nombre"] = filter_input(INPUT_POST,"nam e",FILTER_CALLBACK,array("opciones"=>"Comentario::validar_texto")))) ( $errores["nombre"] = "Por favor ingrese un nombre."; ) if(!empty($errors))( // Si hay errores, copia la matriz $errors a $arr: $arr = $errors; return false; ) // Si la entrada es correcta, limpia los datos y cópielo en $arr : foreach($data as $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // el correo electrónico debe estar en minúsculas: $arr["email"] = strtolower( trim($ arr["correo electrónico"])); devolver verdadero; )

Método validar()(también parte de una clase) se define como estático. Esto significa que se puede llamar directamente con la construcción comentario::validar(), sin crear un objeto de clase. Este método valida los datos que se pasan a través de AJAX.

El método utiliza nueva caracteristica filtro, que estuvo disponible en PHP 5.2.0. De esta manera, podemos verificar y filtrar fácilmente los datos que se pasan al script. Por ejemplo, filtro_entrada(INPUT_POST,'url',FILTER_VALIDATE_URL) significa que verificamos si $_POST["url"] URL correcta. Si es así, la función devuelve el valor de la variable, de lo contrario, devuelve el valor falso.

Antes de usar una función de este tipo, era necesario usar expresiones regulares para validar los datos (usando una serie de construcciones si). Un beneficio adicional es que obtenemos los datos antes de realizar cualquier transformación específica.

También es posible definir una función que realizará modificaciones de datos adicionales.

comentario.clase.php - Parte 3

función estática privada validate_text($str) ( /* / Este método se usa como FILTER_CALLBACK */ if(mb_strlen($str,"utf8")<1) return false; // Кодируем все специальные символы html (<, >, ", & .. etc.) y convierta // el carácter de nueva línea en una etiqueta
: $str = nl2br(htmlspecialchars($str)); // Eliminar cualquier salto de línea restante $str = str_replace(array(chr(10),chr(13)),"",$str); devolver $cadena; )

último método validar_texto pasado como una función de retorno en dos llamadas filtro_entrada. Convierte todos los caracteres HTML especiales, lo que bloquea efectivamente los ataques XSS. También reemplaza líneas nuevas con etiquetas.
.

enviar.php

/* / Esta matriz se llenará con datos / que se pasan al script, / o mensajes de error. /*/ $matriz = matriz(); $valida = Comentario::validate($arr); if($valida) ( /* De acuerdo, inserte datos en la base de datos: */ mysql_query(" INSERT INTO comments(name,url,email,body) VALUES ("".$arr["name"].", "".$arr["url"]."", "".$arr["correo electrónico"]."", "".$arr["cuerpo"]."")"); $arr["dt "] = fecha("r",hora()); $arr["id"] = mysql_insert_id(); /* / Los datos en $arr están preparados para la consulta mysql, / pero necesitamos mostrarlos, así que / estamos preparando todos los elementos en la matriz: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); /* Imprime el marcado del comentario recién insertado: */ echo json_encode (array("estado "=>1,"html"=>$insertedComment->markup())); ) else ( /* Mostrar mensajes de error */ echo "("estado":0,"errores":". json_encode($arr ).")"; )

enviar.php obtiene un comentario de los datos a través de una solicitud AJAX. Lo valida y genera un objeto JSON que contiene marcado XHTML con un comentario incrustado o una lista de errores. propiedad de uso de jQuery estado para determinar qué se debe mostrar, ya sea un mensaje de error o agregar comentarios a la página.

A continuación se muestran dos ejemplos.

Respuesta exitosa

( "status": 1, "html": "Código HTML del comentario viene aquí...")

Propiedad html contiene el código de comentario.

Respuesta de error

( "estado": 0, "errores": ( "correo electrónico": "Ingrese un correo electrónico válido", "cuerpo": "Ingrese un cuerpo de comentario", "nombre": "Ingrese un nombre") )

Cuando hay un error, jQuery recorre el objeto de errores y muestra mensajes junto a los campos que tienen errores.

Paso 3 - CSS

Ahora que el marcado se generó correctamente y se muestra en la página, podemos pasar al estilo.

estilos.css - Parte 1

.comment, #addCommentContainer( /* Estilo para comentarios */ padding:12px; width:400px; position:relative; background-color:#fcfcfc; border:1px solid white; color:#888; margin-bottom:25px; / * CSS3 esquinas redondeadas y sombras */ -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; -moz-box-shadow:2px 2px 0 #c2c2c2; -webkit-box- shadow:2px 2px 0 #c2c2c2; box-shadow:2px 2px 0 #c2c2c2; ) .comment .avatar( /* / El avatar está posicionado absolutamente. / Desplazamiento externo para el comentario div /*/ height:50px; left:- 70px; position :absolute; width:50px; background:url("img/default_avatar.gif") no-repeat #fcfcfc; /* Centrar verticalmente: */ margin-top:-25px; top:50%; -moz- sombra de caja: 1px 1px 0 #c2c2c2; -webkit-caja-sombra: 1px 1px 0 #c2c2c2; sombra de caja: 1px 1px 0 #c2c2c2;)

división .comentario y #addCommentContainer tener el mismo estilo. Varias reglas de CSS3 se utilizan para redondear esquinas y reflejar sombras.

estilos.css - Parte 2

.comment .avatar img( display:block; ) .comment .name( font-size:20px; padding-bottom:10px; color:#ccc; ) .comment .date( font-size:10px; padding:6px 0; position:absolute; right:15px; top:10px; color:#bbb; ) .comment p, #addCommentContainer p( font-size:18px; line-height:1.5; overflow-x:hidden; ) #addCommentContainer input, # addCommentContainer textarea( /* Estilo de entrada */ display:block; border:1px solid #ccc; margin:5px 0 5px; padding:3px; font-size:12px; color:#555; font-family:Arial, Helvetica, sans -serif; ) #addCommentContainer textarea( ancho:300px; ) label( font-size:10px; ) label span.error( color:red; position:relative; right:-10px; ) #submit( /* Botón "Enviar" " */ color de fondo:#58B9EB; borde:1px sólido #40A2D4; color:#FFFFFF; cursor:puntero; familia de fuentes:"Myriad Pro",Arial,Helvetica,sans-serif; tamaño de fuente:14px; fuente -peso:negrita; relleno:4px; margen superior:5px; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; ) #s ubmit: hover (color de fondo: # 80cdf5; borde-color:#52b1e2; )

En la segunda parte, establecemos los estilos para comentarios y elementos de formulario. Notemos el selector aporte, que resalta elementos dependiendo de un atributo escribe.

Paso 4 - jQuery

Ahora pasemos a jQuery.

guión.js

$(document).ready(function()( /* El siguiente código se ejecuta solo después de cargar el DOM */ /* Esta marca evita que se envíen varios comentarios: */ var working = false; /* Captura del envío del formulario event: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(working) return false; working = true; $("#submit").val("Working.. "); $("span .error").remove(); /* Enviar campos de formulario para enviar.php: */ $.post("submit.php",$(this).serialize(),function(msg )( working = false; $ ("#submit").val("Submit"); if(msg.status)( /* / Si la inserción fue exitosa, agregue un comentario / debajo del último en la página con un efecto slideDown /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Si existe son errores, recorra el objeto / msg.errors y envíelos a la página /*/ $.each(msg.errors,function(k,v)( $("label").append(" "+v+""); )); ) ),"json"); )); ));

Usamos una llamada de función $(documento).listo() que vincula una función al evento. Variable laboral actúa como una bandera que indica que hay una solicitud AJAX en curso (evitando así la duplicación del mismo comentario).

En la función de retorno para la solicitud POST AJAX, verificamos la propiedad estado para determinar si el comentario se insertó correctamente. En caso afirmativo, agregamos el marcado resultante a la página después del último comentario con animación. bajar deslizándose.

Si hubo problemas, mostramos mensajes de error agregando lapso error al elemento correspondiente etiqueta(atributo del elemento etiqueta contiene identificación entrada que tiene un error).

¡Listo!

Conclusión

Para ejecutar el script en su servidor necesita crear una tabla comentarios en su base de datos MySQL. Puedes hacerlo con el código SQL del archivo. tabla.sql, que debe ingresarse en la pestaña SQL en phpMyAdmin. Luego debe configurar los parámetros de conexión de la base de datos MySQL en el archivo conectar.php .

Los comentarios en PHP son similares a los comentarios usados ​​en HTML. En la sintaxis de PHP, los comentarios siempre comienzan con una secuencia especial de caracteres, y el intérprete ignorará cualquier texto que aparezca entre estos caracteres especiales.

En HTML, el propósito principal de un comentario es servir como una nota para los desarrolladores que pueden ver el código fuente de su sitio. Los comentarios de PHP difieren en que no se mostrarán a los visitantes. La única forma de ver los comentarios de PHP es abrir el archivo para editarlo. Esto hace que los comentarios de PHP solo sean útiles para los programadores de PHP.

En caso de que haya olvidado o no sepa cómo se hacen los comentarios en HTML, vea el ejemplo a continuación.

Sintaxis de comentario de php: comentario de una sola línea

Mientras que html tiene solo un tipo de comentario, PHP tiene dos tipos. El primer tipo que discutiremos es el comentario de una sola línea. Es decir, un comentario que le dice al intérprete que ignore lo que suceda en esa línea a la derecha de los comentarios. Para usar este comentario, use los caracteres "//" o "#" y el intérprete de PHP ignorará todo el texto a la derecha.

Psst... ¡No puedes ver mis comentarios de PHP!"; // echo "nada"; // echo "¡Mi nombre es Humperdinkle!"; # echo "Yo tampoco hago nada"; ?>

Resultado:

¡Hola Mundo! Psst... ¡No puedes ver mis comentarios de PHP!

Tenga en cuenta que varios de nuestros comandos de eco no se procesaron porque los comentamos con caracteres de comentario especiales. Este tipo de comentario se usa a menudo para escribir rápidamente sobre código complejo y ofuscado, o para eliminar temporalmente una línea de código PHP (con fines de depuración).

Sintaxis de comentario de php: comentario de varias líneas

Al igual que los comentarios HTML, los comentarios de varias líneas en PHP se pueden usar para comentar grandes bloques de código o para escribir comentarios en varias líneas. Los comentarios de varias líneas en PHP comienzan con "/*" y terminan con "*/". Cualquier cosa entre estos caracteres será ignorada.

Resultado.