Unerschrockene Kommentare PHP. Einfaches Kommentarsystem mit AJAX. PHP-Kommentarsyntax: einzeiliger Kommentar

Ich habe einmal darüber geschrieben. Also haben wir dort nur darüber nachgedacht „ gierig„Vertreter. Allerdings nicht immer ihre“ Gier„Es hilft uns, sehr oft tut es weh. Etwas weiter unten werde ich ein Beispiel zeigen, an dem man deutlich sehen kann, was sie manchmal tun, und auch zeigen, wie man ihre Begeisterung abbauen und machen kann.“ Wiederholungsquantoren sind „faul“.

Schauen wir uns ein einfaches und bereits klassisches Beispiel an:

$str = "Klein Linie C deutlich Auswahl.";
.*<\/b>
echo $result_str;
?>

Vielleicht erwarten Sie so etwas: Kleines „bold_highlight“ hier mit „bold_highlight“ hier". Das heißt, nur der Inhalt innerhalb des Tags wird ersetzt<B> auf die Zeichenfolge, die wir zusammen mit dem Tag selbst angegeben haben. Dies ist jedoch nicht ganz richtig, da hier „ Gier der Quantoren". Infolgedessen befand sich der Ersatz nicht in jedem Tag<B>, aber vom allerersten öffnenden Tag bis zum allerletzten schließenden Tag. Das ist Gier.

So schreiben Sie diesen Code, damit die Ersetzung wie gewünscht erfolgt:

$str = "Klein Linie C deutlich Auswahl.";
$result_str = preg_replace("/ .*?<\/b>/i", "bold_highlight_here", $str);
echo $result_str;
?>

Alles, was wir geändert haben, ist der reguläre Ausdruck nach dem Wiederholungsquantifizierer. .* „Fragezeichen, was gerecht ist macht den Quantor „faul“. Das Ergebnis lautet nun: „ Ein kleines Bold_Highlight hier mit einem Bold_Highlight hier. Das ist es, was wir erreichen wollten.

Ich hoffe wirklich, dass Sie das Problem verstehen. „Gier“-Quantoren und verstehen, wie sie funktionieren. Und erkannte auch, wie sich das mit einem einfachen Schild beheben lässt“ ? ". Dieses Thema ist wirklich wichtig, und eine große Anzahl von Neulingen im Bereich reguläre Ausdrücke machen die gleichen Fehler im Zusammenhang mit „Gier“ von Wiederholungsquantoren Wenn Sie also die ganze Bedeutung noch nicht bis zum Ende verstanden haben, lesen Sie den Artikel noch einmal.

25.04.2017


Hallo alle!
Wir lernen weiterhin die Grundlagen von PHP von Grund auf!
In dieser Lektion erkläre ich Ihnen, was ein Kommentar in PHP ist, und in der Praxis werden wir versuchen, Ihren Kommentar in den Code zu schreiben. Aber das ist noch nicht alles. Ich möchte Ihnen auch erklären, wie Sie den Code auskommentieren und warum dies überhaupt erfolgen sollte.

Was ist ein Kommentar inPHP
Kommentiere reinPHP ist ein PHP-Entwickler-Hinweis zur schnellen Orientierung im Code, sowie zum Bearbeiten.

Ein Kommentar in PHP ist für den Benutzer, der die Webseite zum Anzeigen geöffnet hat, nicht sichtbar. Auch wenn der Benutzer sich entscheidet, hinzuschauen Quelle Seite wird der Kommentar immer noch nicht sichtbar sein, da alle php.

Kommentar zum PHP-Code

Es gibt zwei Arten von Kommentaren für PHP-Code:

→ Einzeiler
→ mehrzeilig

⇒ Einzeiliger Kommentar für PHP
Für einen einzeiligen Kommentar verwenden Sie die Zeichen „//“ oder „#“.

Nach diesen Zeichen wird alles, was in einer Zeile steht, ignoriert und als Kommentar behandelt.

Zum Update abonnieren"; # subscribe (das ist ein Kommentar) ?>


Abonnieren Sie, um Updates zu erhalten

⇒ Mehrzeiliger Kommentar für PHP
Ein mehrzeiliger Kommentar für PHP beginnt mit „/*“ und endet mit „*/“.
Alles zwischen diesen Zeichen wird ignoriert und als Kommentar behandelt.
Ein mehrzeiliger Kommentar wird verwendet, wenn der Eintrag mehrere Zeilen enthält.

Auf dem Bildschirm sehen Sie nur den folgenden Text:

Hallo Leser der Blog-Site !!!

P.S.: Kommentieren Sie Ihren Code immer. Wenn Sie denken, dass Sie sich in 1-2 Jahren an alles erinnern werden, was Sie im Code getan haben, irren Sie sich, die Chance ist sehr gering. Selbst wenn Sie sich erinnern, müssen Sie viel Zeit damit verbringen, zu lernen – was, wo und warum ...
Machen Sie sich die Zukunft angenehm – kommentieren Sie den Code aus und dann sagen Sie sich „DANKE!!!“.
Hinterlassen Sie einen Kommentar im Code, es wird 1 Minute Ihrer Zeit in Anspruch nehmen, aber es wird Ihnen in Zukunft einen ganzen Tag ersparen.

Kommentieren Sie den PHP-Code aus

Nehmen wir an, Sie haben einen PHP-Code geschrieben, müssen aber aus irgendeinem Grund zwei Zeilen aus dem Code entfernen.
Ich habe es nicht eilig, etwas aus dem Code zu entfernen, insbesondere wenn es sich um PHP-Code handelt, kommentiere ich es besser aus. Und plötzlich muss der Code zurückgegeben werden. Es ist einfacher, den Kommentar zu entfernen, als den Code neu zu schreiben.

So kommentieren Sie Code ausPHP
Ein Beispiel mit einem einzeiligen Kommentar:

Update abonnieren"; ?>

Ein Beispiel mit einem mehrzeiligen Kommentar.

Schritt 1 – XHTML

Schauen wir uns zunächst das Kommentar-Markup an. Gegebener Code von PHP mit Klasse generiert Kommentar .

demo.php

Benutzername
30. Juni 2010

Kommentartext

div Benutzerbild enthält einen Link (sofern der Benutzer beim Posten des Kommentars die richtige URL eingegeben hat) und das Avatar-Bild, das wir von gravatar.com erhalten. Wir kehren zum Generieren des Markups im PHP-Schritt zurück. Am Ende folgen div Name div Zeit und Kommentartext.

Andere wichtiges Element in XHTML ist das Kommentarformular. Sie sendet mit POST. Alle Felder außer URL müssen ausgefüllt werden.

demo.php

Einen Kommentar hinzufügen

Das Formular wird mit AJAX übermittelt. Die Prüfung erfolgt im Hintergrund send.php. Jedes Feld hat ein entsprechendes Element Etikett, mit Attributsatz für .

Schritt 2 – PHP

PHP übernimmt die Kommunikation mit der Datenbank MySQL-Daten und generiert das Markup für den Kommentar. Außerdem wird das Ende der AJAX-Anfrage abgerufen und die Kommentardaten in die Tabelle eingefügt Kommentare.

demo.php

/* / Alle Kommentare auswählen und das Array $comments mit Objekten füllen */ $comments = array(); $result = mysql_query("SELECT * FROM comments ORDER BY id ASC"); while($row = mysql_fetch_assoc($result)) ( $comments = new Comment($row); )

MySQL-Abfrage wählt alle Datensätze aus der Tabelle aus und füllt das Array $Kommentare Klassenobjekte Kommentar. Dieses Array wird bei der Ausführung des Skripts weiter ausgegeben.

demo.php

/* / Kommentare einzeln ausgeben: */ foreach($comments as $c)( echo $c->markup(); )

Jeder Kommentar hat eine Methode markup(), das den richtigen HTML-Code generiert, der auf der Seite angezeigt werden kann. Im Folgenden finden Sie die Klassen- und Methodendefinitionen.

Die Klasse empfängt eine Zeile aus der Datenbank (erhalten mit mysql_fetch_assoc()) und speichern Sie es in einer Variablen $Daten. Es ist nur für die Klassenmethode verfügbar.

comment.class.php – Teil 1

Klasse Kommentar ( private $data = array(); öffentliche Funktion __construct($row) ( /* / Konstruktor */ $this->data = $row; ) öffentliche Funktion markup() ( /* / Diese Methode gibt XHTML-Markup für aus */ // Legen Sie einen Alias ​​fest, um zu vermeiden, dass $this->data jedes Mal geschrieben wird: $d = &$this->data; $link_open = ""; $link_close = ""; if($d["url"] ) ( // Wenn beim Hinzufügen eines Kommentars eine URL eingegeben wurde, // bestimmen Sie die öffnenden und schließenden Link-Tags $link_open = ""; $link_close = ""; ) // Konvertieren Sie die Zeit in das UNIX-Format: $d["dt" ] = strtotime ($d["dt"]); // Wird zum Festlegen des Standardbilds benötigt: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"]) ."/ img/default_avatar.gif"; return "
„.$link_open.“ „.$link_close.“
".$link_open.$d["name"].$link_close."
".date("d M Y",$d["dt"])."

".$d["body"]."

"; }

Das Skript verwendet Gravatar, um den Avatar in den Kommentaren darzustellen. Gravatar ist ein sehr nützlicher Dienst, der einen Avatar einer E-Mail-Adresse zuordnet. Das Avatar-Bild kann einfach durch Übergeben der codierten Funktion erhalten werden md5() Ihre E-Mail-Adresse auf gravatar.com.

Das Skript ermittelt die URL, unter der es ausgeführt wird, und ermittelt die genaue Adresse des Bildes default_avatar.gif. Dieses Bild wird zusammen mit dem MD5-Hash weitergegeben. Wenn für die angegebene E-Mail-Adresse kein Avatar gefunden wurde, wird ein alternatives Bild angezeigt.

comment.class.php – Teil 2

öffentliche statische Funktion validieren(&$arr) ( /* / Diese Methode wird verwendet, um über AJAX gesendete Daten zu validieren. / / Sie gibt je nach Gültigkeit der Daten wahr/falsch zurück und füllt / das übergebene $arr-Array als Parameter mit entweder data oder */ $errors = array(); $data = array(); // Verwenden Sie die in PHP 5.2.0 eingeführte Funktion filter_input if(!($data["email"] = filter_input(INPUT_POST ,"email",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Bitte geben Sie eine gültige E-Mail ein."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL) )) ( // Wenn eine ungültige URL in das URL-Feld eingegeben wurde, // so tun, als wäre keine URL eingegeben worden: $url = ""; ) // Verwenden Sie einen Filter mit einer Rückruffunktion: if(!($data[ "body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["body"] = "Bitte Kommentartext eingeben."; ) if(!( $data["name"] = filter_input(INPUT_POST,"name",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["name"] = "Bitte Geben Sie einen Namen ein. "; ) if(!empty($errors))( // Wenn Fehler vorliegen, kopieren Sie das Array $errors nach $arr: $arr = $errors; return false; ) // Wenn die Eingabe korrekt ist, bereinigen Sie die Daten und kopiere es nach $arr: foreach($data as $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // E-Mail muss in Kleinbuchstaben geschrieben werden: $arr["email"] = strtolower( trim($ arr["email"])); return true; )

Methode bestätigen()(auch Teil einer Klasse) ist definiert als statisch. Dies bedeutet, dass es direkt mit dem Konstrukt aufgerufen werden kann Kommentar::validate(), ohne ein Klassenobjekt zu erstellen. Diese Methode validiert Daten, die über AJAX übergeben werden.

Die Methode verwendet neue Funktion Filter, der verfügbar wurde in PHP 5.2.0. Auf diese Weise können wir die Daten, die an das Skript übergeben werden, einfach überprüfen und filtern. Zum Beispiel, filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL) Das heißt, wir prüfen, ob $_POST["url"] korrekte URL. Wenn ja, gibt die Funktion den Wert der Variablen zurück, andernfalls gibt sie den Wert zurück FALSCH.

Bevor eine solche Funktion verwendet werden konnte, war es notwendig, reguläre Ausdrücke zur Validierung von Daten zu verwenden (unter Verwendung einer Reihe von Konstrukten). Wenn). Ein zusätzlicher Vorteil besteht darin, dass wir die Daten erhalten, bevor wir spezifische Transformationen durchführen.

Es ist auch möglich, eine Funktion zu definieren, die zusätzliche Datenänderungen durchführt.

comment.class.php – Teil 3

private statische Funktion validieren_text($str) ( /* / Diese Methode wird als FILTER_CALLBACK verwendet */ if(mb_strlen($str,"utf8")<1) return false; // Кодируем все специальные символы html (<, >, ", & .. etc) und konvertieren // das Newline-Zeichen in ein Tag
: $str = nl2br(htmlspecialchars($str)); // Alle verbleibenden Zeilenumbrüche entfernen $str = str_replace(array(chr(10),chr(13)),"",$str); return $str; )

Letzte Methode validieren_text in zwei Aufrufen als Rückgabefunktion übergeben filter_input. Es konvertiert alle speziellen HTML-Zeichen, wodurch XSS-Angriffe effektiv blockiert werden. Außerdem werden Zeilenumbrüche durch Tags ersetzt
.

send.php

/* / Dieses Array wird entweder mit Daten / gefüllt, die an das Skript übergeben werden, / oder mit Fehlermeldungen. /*/ $arr = array(); $validates = Comment::validate($arr); if($validates) ( /* Alles klar, Daten in die Datenbank einfügen: */ mysql_query(" INSERT INTO comments(name,url,email,body) VALUES ("".$arr["name"]."", "".$arr["url"]."", "".$arr["email"]."", "".$arr["body"]."")"); $arr["dt "] = date("r",time()); $arr["id"] = mysql_insert_id(); /* / Die Daten in $arr sind für die MySQL-Abfrage vorbereitet, / aber wir müssen sie anzeigen, also / Wir bereiten alle Elemente im Array vor: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); /* Drucken Sie das Markup des gerade eingefügten Kommentars aus: */ echo json_encode (array("status "=>1,"html"=>$insertedComment->markup())); ) else ( /* Fehlermeldungen anzeigen */ echo "("status":0,"errors":". json_encode($arr ).")"; )

send.php holt über eine AJAX-Anfrage einen Kommentar aus den Daten. Validiert es und gibt ein JSON-Objekt aus, das entweder XHTML-Markup mit einem eingebetteten Kommentar oder eine Fehlerliste enthält. jQuery-Verwendungseigenschaft Status um zu bestimmen, was angezeigt werden soll – entweder eine Fehlermeldung oder das Hinzufügen von Kommentar-Markup zur Seite.

Nachfolgend finden Sie zwei Beispiele.

Erfolgreiche Antwort

("status": 1, "html": "Html-Code des Kommentars kommt hier...")

Eigentum html enthält den Kommentarcode.

Fehlerreaktion

("status": 0, "errors": ("email": "Bitte geben Sie eine gültige E-Mail ein.", "body": "Bitte geben Sie einen Kommentartext ein.", "name": "Bitte geben Sie einen Namen ein. ) )

Wenn ein Fehler auftritt, durchläuft jQuery das Fehlerobjekt und zeigt Meldungen neben den fehlerhaften Feldern an.

Schritt 3 – CSS

Nachdem das Markup nun korrekt generiert und auf der Seite angezeigt wurde, können wir mit dem Styling fortfahren.

styles.css – Teil 1

.comment, #addCommentContainer( /* Stil für Kommentare */ padding:12px; width:400px; position:relative; background-color:#fcfcfc; border:1px solid white; color:#888; margin-bottom:25px; / * CSS3 abgerundete Ecken und Schatten */ -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( /* / Der Avatar ist absolut positioniert. / Äußerer Offset für den Kommentar div /*/ height:50px; left:- 70px; Position :absolute; Breite:50px; Hintergrund:url("img/default_avatar.gif") no-repeat #fcfcfc; /* Vertikal zentrieren: */ 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 .Kommentar Und #addCommentContainer haben den gleichen Stil. Um Ecken abzurunden und Schatten zu reflektieren, werden mehrere CSS3-Regeln verwendet.

style.css – Teil 2

.comment .avatar img( display:block; ) .comment .name( Schriftgröße:20px; padding-bottom:10px; color:#ccc; ) .comment .date( Schriftgröße: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( /* Eingabestil */ 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( /* Schaltfläche „Senden“. " */ Hintergrundfarbe: #58B9EB; Rand: 1 Pixel einfarbig #40A2D4; Farbe: #FFFFFF; Cursor: Zeiger; Schriftfamilie: „Myriad Pro“, Arial, Helvetica, serifenlos; Schriftgröße: 14 Pixel; Schriftart -weight:bold; padding:4px; margin-top:5px; -moz-border-radius:4px; -webkit-border-radius:4px; border-radius:4px; ) #submit:hover( Hintergrundfarbe:# 80cdf5; Rahmenfarbe:#52b1e2; )

Im zweiten Teil legen wir die Stile für Kommentare und Formularelemente fest. Beachten wir den Selektor Eingang, die Elemente abhängig von einem Attribut hervorhebt Typ.

Schritt 4 – jQuery

Kommen wir nun zu jQuery.

script.js

$(document).ready(function()( /* Der folgende Code wird erst ausgeführt, nachdem das DOM geladen wurde */ /* Dieses Flag verhindert, dass mehrere Kommentare übermittelt werden: */ varworking = false; /* Das Absenden des Formulars wird abgefangen event: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(working) return false;working = true; $("#submit").val("Working.. "); $("span .error").remove(); /* Formularfelder an subscribe.php senden: */ $.post("submit.php",$(this).serialize(),function(msg )(working = false; $ ("#submit").val("Submit"); if(msg.status)( /* / Wenn das Einfügen erfolgreich war, fügen Sie einen Kommentar / unter dem letzten auf der Seite mit einem hinzu slideDown-Effekt /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Falls vorhanden Sind Fehler, durchlaufen Sie das Objekt /msg.errors und geben Sie sie auf der Seite /*/ aus. $.each(msg.errors,function(k,v)( $("label").append(" „+v+“"); )); ) ),"json"); )); ));

Wir verwenden einen Funktionsaufruf $(Dokument).ready() Ein, der eine Funktion an das Ereignis bindet. Variable Arbeiten fungiert als Flag, das signalisiert, dass eine AJAX-Anfrage ausgeführt wird (und so die Duplizierung desselben Kommentars verhindert).

In der Rückgabefunktion für die POST AJAX-Anfrage überprüfen wir die Eigenschaft Status um festzustellen, ob der Kommentar erfolgreich eingefügt wurde. Wenn ja, fügen wir das resultierende Markup nach dem letzten Kommentar mit Animation zur Seite hinzu herunterrutschen.

Wenn es Probleme gab, dann zeigen wir durch Hinzufügen Fehlermeldungen an Spanne Fehler zum entsprechenden Element Etikett(Elementattribut Etikett enthält Ausweis Eingabe, die einen Fehler aufweist).

Bereit!

Abschluss

Um das Skript auf Ihrem Server auszuführen, müssen Sie eine Tabelle erstellen Kommentare in Ihrer MySQL-Datenbank. Sie können dies mit SQL-Code aus einer Datei tun table.sql, die auf der Registerkarte „SQL“ in phpMyAdmin eingegeben werden muss. Anschließend müssen Sie die Verbindungsparameter der MySQL-Datenbank in der Datei festlegen connect.php .

Kommentare in PHP ähneln Kommentaren, die in HTML verwendet werden. In der PHP-Syntax beginnen Kommentare immer mit einer Sonderzeichenfolge und jeglicher Text, der zwischen diesen Sonderzeichen erscheint, wird vom Interpreter ignoriert.

In HTML besteht der Hauptzweck eines Kommentars darin, als Hinweis für Entwickler zu dienen, die den Quellcode Ihrer Website anzeigen können. Der Unterschied zu PHP-Kommentaren besteht darin, dass sie den Besuchern nicht angezeigt werden. Die einzige Möglichkeit, PHP-Kommentare anzuzeigen, besteht darin, die Datei zum Bearbeiten zu öffnen. Dadurch sind PHP-Kommentare nur für PHP-Programmierer nützlich.

Falls Sie vergessen haben oder nicht wissen, wie Kommentare in HTML erstellt werden, sehen Sie sich das folgende Beispiel an.

PHP-Kommentarsyntax: einzeiliger Kommentar

Während es in HTML nur einen Kommentartyp gibt, gibt es in PHP zwei Kommentartypen. Der erste Typ, den wir besprechen werden, ist der einzeilige Kommentar. Das heißt, ein Kommentar, der den Interpreter anweist, alles zu ignorieren, was in dieser Zeile rechts neben den Kommentaren passiert. Um diesen Kommentar zu verwenden, verwenden Sie die Zeichen „//“ oder „#“ und der gesamte Text rechts wird vom PHP-Interpreter ignoriert.

Psst...Du kannst meine PHP-Kommentare nicht sehen!“; // echo „nichts“; // echo „Mein Name ist Humperdinkle!“; # echo „Ich mache auch nichts“; ?>

Ergebnis:

Hallo Welt! Psst...Sie können meine PHP-Kommentare nicht sehen!

Beachten Sie, dass mehrere unserer Echo-Befehle nicht verarbeitet wurden, weil wir sie mit speziellen Kommentarzeichen auskommentiert haben. Diese Art von Kommentar wird häufig verwendet, um schnell über komplexen und verschleierten Code zu schreiben oder eine Zeile PHP-Code vorübergehend zu entfernen (zu Debugging-Zwecken).

PHP-Kommentarsyntax: mehrzeiliger Kommentar

Wie HTML-Kommentare können mehrzeilige Kommentare in PHP zum Kommentieren großer Codeblöcke oder zum Schreiben von Kommentaren in mehreren Zeilen verwendet werden. Mehrzeilige Kommentare in PHP beginnen mit „/*“ und enden mit „*/“. Alles zwischen diesen Zeichen wird ignoriert.

Ergebnis.