Commenti intrepidi php. Semplice sistema di commenti che utilizza AJAX. Sintassi del commento php: commento a riga singola

Una volta ho scritto di . Quindi, abbiamo considerato solo lì " avido"rappresentanti. Tuttavia, non sempre loro " avidità"Ci aiuta, molto spesso fa male. Un po 'più in basso mostrerò un esempio in cui puoi vedere chiaramente cosa fanno a volte, e mostrare anche come ridurre il loro ardore e rendere i quantificatori di ripetizione sono "pigri".

Facciamo un esempio semplice e già classico:

$str = "Piccolo linea c grassetto selezione.";
.*<\/b>
echo $risultato_str;
?>

Forse ti aspetti qualcosa del genere: Piccolo bold_highlight qui con bold_highlight qui". Cioè, semplicemente sostituendo il contenuto all'interno del tag<b> alla stringa che abbiamo specificato insieme al tag stesso. Tuttavia, questo non è del tutto vero, poiché è qui che " avidità di quantificatori". E di conseguenza, la sostituzione non era all'interno di ogni tag<b>, ma dal primo tag di apertura all'ultimo tag di chiusura. Ecco cos'è l'avidità.

Ecco come scrivere questo codice in modo che la sostituzione avvenga nel modo desiderato:

$str = "Piccolo linea c grassetto selezione.";
$result_str = preg_replace("/ .*?<\/b>/i", "bold_highlight_here", $str);
echo $risultato_str;
?>

Tutto quello che abbiamo cambiato è la regex dopo il quantificatore di ripetizione " .* "punto interrogativo, che è giusto rende il quantificatore "pigro". Ora il risultato sarà: " Un piccolo grassetto qui con un grassetto qui. che è quello che stavamo cercando di ottenere.

Spero davvero che tu capisca il problema. quantificatori di "avidità". e capire come funzionano. E ho anche capito come questo può essere risolto con un semplice segno " ? ". Questo argomento è davvero importante e un numero enorme di nuovi arrivati ​​alle espressioni regolari commette gli stessi errori relativi a "avidità" dei quantificatori ripetitivi, quindi se non hai ancora realizzato l'intero significato fino alla fine, rileggi di nuovo l'articolo.

25.04.2017


Ciao!
Continuiamo a imparare le basi di PHP da zero!
In questa lezione ti dirò cos'è un commento in PHP e in pratica proveremo a scrivere il tuo commento nel codice. Ma questo non è tutto. Voglio anche dirti come commentare il codice e perché dovrebbe essere fatto.

In cosa consiste un commentoPHP
Commenta dentroPHPè un suggerimento per sviluppatori php per un rapido orientamento nel codice, oltre che per la modifica.

Un commento in PHP non è visibile all'utente che ha aperto la pagina Web per la visualizzazione. Anche se l'utente decide di guardare fonte pagina, il commento non sarà ancora visibile, poiché tutti i file php.

Commento al codice PHP

Esistono 2 tipi di commenti per il codice PHP:

→ una riga
→ multilinea

⇒ Commento a riga singola per PHP
Per un commento a riga singola, utilizza i caratteri "//" o "#"

Dopo questi caratteri, tutto ciò che è scritto su una riga verrà ignorato e trattato come un commento.

Iscriviti per aggiornare"; # iscriviti (questo è un commento) ?>


Iscriviti per aggiornare

⇒ Commento multilinea per PHP
Un commento su più righe per PHP inizia con "/*" e termina con "*/".
Qualsiasi cosa tra questi caratteri verrà ignorata e trattata come un commento.
Un commento su più righe viene utilizzato se sono presenti più righe nella voce.

Sullo schermo, vedrai solo il seguente testo:

Ciao lettori del blog - sito !!!

PS: Commenta sempre il tuo codice. Se pensi di ricordare tutto ciò che hai fatto nel codice in 1-2 anni, ti sbagli, la possibilità è molto piccola. Anche se ricordi, dovrai dedicare molto tempo allo studio: cosa, dove e perché ...
Renditi il ​​futuro piacevole - commenta il codice e poi dirai a te stesso "GRAZIE!!!".
Lascia un commento nel codice, ci vorrà 1 minuto del tuo tempo, ma ti farà risparmiare un'intera giornata in futuro.

Commenta il codice PHP

Supponiamo che tu abbia scritto un codice php, ma per qualche motivo devi rimuovere 2 righe dal codice.
Non ho fretta di rimuovere qualcosa dal codice, specialmente se si tratta di codice php, farei meglio a commentarlo. E all'improvviso sarà necessario restituire il codice. È più facile decommentare che scrivere codice in un modo nuovo.

Come commentare il codice inPHP
Un esempio con un commento a riga singola:

Iscriviti per aggiornare"; ?>

Un esempio con un commento su più righe.

Passo 1 - XHTML

Per prima cosa, diamo un'occhiata al markup dei commenti. Codice dato generato da PHP con class Commento .

demo.php

Nome utente
30 giugno 2010

Testo del commento

div avatar contiene un collegamento (se l'utente ha inserito l'URL corretto durante la pubblicazione del commento) e l'immagine avatar che otteniamo da gravatar.com . Torneremo a generare il markup nel passaggio PHP. Alla fine segui div nome div tempo e testo di commento.

Altro elemento importante in XHTML è il modulo di commento. Lei manda con INVIARE. Tutti i campi tranne l'URL devono essere completati.

demo.php

Aggiungi un commento

Il modulo viene inviato utilizzando AJAX. Il controllo viene eseguito in background invia.php. Ogni campo ha un elemento corrispondente etichetta, con set di attributi per .

Passaggio 2: PHP

PHP gestisce la comunicazione con il database Dati MySQL e genera il markup per il commento. Ottiene anche la fine della richiesta AJAX e inserisce i dati del commento nella tabella Commenti.

demo.php

/* / Seleziona tutti i commenti e popola l'array $comments con oggetti */ $comments = array(); $risultato = mysql_query("SELEZIONA * DA commenti ORDER BY id ASC"); while($row = mysql_fetch_assoc($result)) ( $comments = new Comment($row); )

La query MySQL seleziona tutti i record dalla tabella e popola l'array $commenti oggetti di classe commento. Questo array viene emesso ulteriormente quando lo script viene eseguito.

demo.php

/* / Stampa i commenti uno per uno: */ foreach($comments as $c)( echo $c->markup(); )

Ogni commento ha un metodo marcatura(), che genera il codice HTML corretto, pronto per essere visualizzato nella pagina. Di seguito sono riportate le definizioni di classe e metodo.

La classe riceve una riga dal database (ottenuta utilizzando mysql_fetch_assoc()) e memorizzarlo in una variabile $dati. È disponibile solo per il metodo della classe.

comment.class.php - Parte 1

class Comment ( private $data = array(); public function __construct($row) ( /* / Costruttore */ $this->data = $row; ) public function markup() ( /* / Questo metodo restituisce il markup XHTML per */ // Imposta un alias per evitare di scrivere $this->data ogni volta: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"] ) ( // Se è stato inserito un URL durante l'aggiunta di un commento, // determina i tag di collegamento di apertura e chiusura $link_open = ""; $link_close = ""; ) // Converti l'ora nel formato UNIX: $d["dt" ] = strtotime ($d["dt"]); // Necessario per impostare l'immagine predefinita: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]) ."/ img/default_avatar.gif"; return "
".$link_open." ".$link_close."
".$link_open.$d["nome"].$link_close."
".date("d M Y",$d["dt"])."

".$d["corpo"]."

"; }

Lo script usa gravatar per rappresentare l'avatar nei commenti. Gravatar è un servizio molto utile che abbina un avatar a un indirizzo email. L'immagine dell'avatar può essere facilmente ottenuta passando la funzione codificata md5() il tuo indirizzo email su gravatar.com.

Lo script determina l'URL su cui viene eseguito e determina l'indirizzo esatto dell'immagine default_avatar.gif. Questa immagine viene trasmessa insieme all'hash md5 e, se non viene trovato alcun avatar per l'indirizzo e-mail specificato, verrà visualizzata un'immagine alternativa.

comment.class.php - Parte 2

public static function validate(&$arr) ( /* / Questo metodo viene utilizzato per convalidare i dati inviati tramite AJAX. // Restituisce true/false a seconda della validità dei dati e riempie / l'array $arr, che viene passato come parametro con data o */ $errors = array(); $data = array(); // Usa la funzione filter_input introdotta in PHP 5.2.0 if(!($data["email"] = filter_input(INPUT_POST ,"email",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Inserisci un indirizzo email valido."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL) )) ( // Se nel campo URL è stato immesso un URL non valido, // agire come se non fosse stato immesso alcun URL: $url = ""; ) // Utilizzare un filtro con una funzione di callback: if(!($data[ "body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["body"] = "Inserisci il testo del commento."; ) if(!( $data["name"] = filter_input(INPUT_POST,"nam e",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["name"] = "Inserisci un nome."; ) if(!empty($errors))( // Se ci sono errori, copia l'array $errors in $arr: $arr = $errors; return false; ) // Se l'input è corretto, cancella i dati e copialo in $arr : foreach($data as $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // l'email deve essere minuscola: $arr["email"] = strtolower( trim($ arr["email"])); restituisce vero; )

Metodo convalidare()(anche parte di una classe) è definito come statico. Ciò significa che può essere chiamato direttamente con il costrutto commento::convalida(), senza creare un oggetto di classe. Questo metodo convalida i dati passati tramite AJAX.

Il metodo utilizza nuova caratteristica filter, che è diventato disponibile in Php 5.2.0. In questo modo possiamo facilmente controllare e filtrare i dati che vengono passati allo script. Per esempio, filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL) significa che controlliamo se $_POST["URL"] URL corretto. In tal caso, la funzione restituisce il valore della variabile, altrimenti restituisce il valore falso.

Prima di utilizzare tale funzione, era necessario utilizzare espressioni regolari per convalidare i dati (utilizzando una serie di costrutti Se). Un ulteriore vantaggio è che otteniamo i dati prima di eseguire qualsiasi trasformazione specifica.

È anche possibile definire una funzione che eseguirà ulteriori modifiche ai dati.

comment.class.php - Parte 3

funzione statica privata validate_text($str) ( /* / Questo metodo è usato come FILTER_CALLBACK */ if(mb_strlen($str,"utf8")<1) return false; // Кодируем все специальные символы html (<, >, ", & .. ecc.) e convertire // il carattere di nuova riga in un tag
: $str = nl2br(htmlspecialchars($str)); // Rimuovi eventuali newline rimanenti $str = str_replace(array(chr(10),chr(13)),"",$str); ritorna $str; )

Ultimo metodo convalida_testo passata come funzione di ritorno in due chiamate input_filtro. Converte tutti i caratteri HTML speciali, bloccando efficacemente gli attacchi XSS. Inoltre sostituisce le nuove righe con i tag
.

invia.php

/* / Questo array verrà riempito con i dati / che vengono passati allo script, / o con i messaggi di errore. /*/ $arr = matrice(); $validate = Commento::validate($arr); if($validates) ( /* Va bene, inserisci i dati nel database: */ mysql_query(" INSERT INTO comments(name,url,email,body) VALUES ("".$arr["name"]."", "".$arr["url"]."", "".$arr["email"]."", "".$arr["corpo"]."")"); $arr["dt "] = date("r",time()); $arr["id"] = mysql_insert_id(); /* / I dati in $arr sono preparati per la query mysql, / ma dobbiamo visualizzarli, quindi / stiamo preparando tutti gli elementi dell'array: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); /* Stampa il markup del commento appena inserito: */ echo json_encode (array("status "=>1,"html"=>$insertedComment->markup())); ) else ( /* Visualizza i messaggi di errore */ echo "("status":0,"errors":". json_encode($arr ).")"; )

invia.php recupera un commento dai dati tramite una richiesta AJAX. Lo convalida e restituisce un oggetto JSON contenente il markup XHTML con un commento incorporato o un elenco di errori. jQuery utilizza la proprietà stato per determinare cosa deve essere visualizzato: un messaggio di errore o l'aggiunta di markup di commento alla pagina.

Di seguito sono riportati due esempi.

Risposta riuscita

("status": 1, "html": "Il codice Html del commento arriva qui..." )

Proprietà html contiene il codice del commento.

Risposta di errore

("status": 0, "errors": ("email": "Inserisci un indirizzo email valido.", "body": "Inserisci il corpo del commento.", "name": "Inserisci un nome." ) )

Quando si verifica un errore, jQuery scorre l'oggetto errori e visualizza i messaggi accanto ai campi che contengono errori.

Passaggio 3: CSS

Ora che il markup è correttamente generato e visualizzato sulla pagina, possiamo passare allo styling.

styles.css - Parte 1

.comment, #addCommentContainer( /* Stile per i commenti */ padding:12px; width:400px; position:relative; background-color:#fcfcfc; border:1px solid white; color:#888; margin-bottom:25px; / * Angoli e ombre arrotondati CSS3 */ -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( /* / L'avatar è posizionato in modo assoluto. / Offset esterno per il commento div /*/ height:50px; left:- 70px; position :absolute; width:50px; background:url("img/default_avatar.gif") no-repeat #fcfcfc; /* Centra verticalmente: */ margin-top:-25px; top:50%; -moz- box-shadow :1px 1px 0 #c2c2c2; -webkit-box-shadow:1px 1px 0 #c2c2c2; box-shadow:1px 1px 0 #c2c2c2; )

div .commento e #addCommentContenitore hanno lo stesso stile. Diverse regole CSS3 vengono utilizzate per arrotondare gli angoli e riflettere le ombre.

styles.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( /* Stile di input */ 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( width:300px; ) label( font-size:10px; ) label span.error( color:red; position:relative; right:-10px; ) #submit( /* Pulsante "Invia" " */ background-color:#58B9EB; border:1px solid #40A2D4; color:#FFFFFF; cursor:pointer; font-family:"Myriad Pro",Arial,Helvetica,sans-serif; font-size:14px; font -weight:bold; padding:4px; margin-top:5px; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; ) #s ubmit:hover( background-color:#80cdf5; bordo-colore:#52b1e2; )

Nella seconda parte impostiamo gli stili per i commenti e gli elementi del modulo. Notiamo il selettore ingresso, che evidenzia gli elementi dipendenti da un attributo genere.

Passaggio 4: jQuery

Passiamo ora a jQuery.

script.js

$(document).ready(function()( /* Il seguente codice viene eseguito solo dopo che il DOM è stato caricato */ /* Questo flag impedisce l'invio di più commenti: */ var working = false; /* Intercettazione del form submit event: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(working) return false; working = true; $("#submit").val("Working.. "); $("span .error").remove(); /* Invia i campi del modulo a submit.php: */ $.post("submit.php",$(this).serialize(),function(msg )( working = false; $ ("#submit").val("Submit"); if(msg.status)( /* / Se l'inserimento ha avuto successo, aggiungi un commento / sotto l'ultimo sulla pagina con un effetto slideDown /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Se c'è sono errori, scorrere l'oggetto / msg.errors e inviarli alla pagina /*/ $.each(msg.errors,function(k,v)( $("label").append(" "+v+""); )); ) ),"json"); )); ));

Usiamo una chiamata di funzione $(documento).pronto() A che associa una funzione all'evento . Variabile Lavorando funge da flag che segnala che è in corso una richiesta AJAX (evitando così la duplicazione dello stesso commento).

Nella funzione di ritorno per la richiesta POST AJAX, controlliamo la proprietà stato per determinare se il commento è stato inserito correttamente. In caso affermativo, aggiungiamo il markup risultante alla pagina dopo l'ultimo commento con animazione scorrere verso il basso.

Se ci sono stati problemi, visualizziamo i messaggi di errore aggiungendo span errore all'elemento corrispondente etichetta(attributo dell'elemento etichetta contiene id input che contiene un errore).

Pronto!

Conclusione

Per eseguire lo script sul tuo server devi creare una tabella Commenti nel tuo database MySQL. Puoi farlo con il codice SQL dal file tabella.sql, che deve essere inserito nella scheda SQL in phpMyAdmin. Quindi è necessario impostare i parametri di connessione al database MySQL nel file connect.php .

I commenti in PHP sono simili ai commenti utilizzati in HTML. Nella sintassi PHP, i commenti iniziano sempre con una sequenza speciale di caratteri e qualsiasi testo che appare tra questi caratteri speciali verrà ignorato dall'interprete.

In HTML, lo scopo principale di un commento è quello di fungere da nota per gli sviluppatori che possono visualizzare il codice sorgente del tuo sito. I commenti PHP differiscono in quanto non verranno visualizzati dai visitatori. L'unico modo per visualizzare i commenti PHP è aprire il file per la modifica. Questo rende i commenti PHP utili solo per i programmatori PHP.

Nel caso ti fossi dimenticato o non sapessi come vengono fatti i commenti in HTML, guarda l'esempio qui sotto.

Sintassi del commento php: commento a riga singola

Mentre html ha un solo tipo di commento, PHP ne ha due. Il primo tipo che discuteremo è il commento a riga singola. Cioè, un commento che dice all'interprete di ignorare qualunque cosa accada su quella riga a destra dei commenti. Per usare questo commento, usa i caratteri "//" o "#" e tutto il testo a destra sarà ignorato dall'interprete PHP.

Psst...Non puoi vedere i miei commenti PHP!; // echo "niente"; // echo "Mi chiamo Humperdinkle!"; # echo "Neanch'io faccio niente"; ?>

Risultato:

Ciao mondo! Psst...Non puoi vedere i miei commenti PHP!

Si noti che molti dei nostri comandi echo non sono stati elaborati perché li abbiamo commentati con caratteri di commento speciali. Questo tipo di commento viene spesso utilizzato per scrivere rapidamente su codice complesso e offuscato o per rimuovere temporaneamente una riga di codice PHP (a scopo di debug).

Sintassi del commento php: commento multilinea

Come i commenti HTML, i commenti multilinea in PHP possono essere usati per commentare grandi blocchi di codice o per scrivere commenti su più righe. I commenti su più righe in PHP iniziano con "/*" e terminano con "*/". Qualunque cosa tra questi caratteri verrà ignorata.

Risultato.