Jeder Arbeiter braucht eine gute Toolbox, und Webentwickler unterscheiden sich nicht. PHP-Hilfsfunktionen dienen dazu, sich wiederholende Aufgaben zu beschleunigen und zu homogenisieren und Ihr Leben erheblich zu vereinfachen. In diesem ersten Lernprogramm wird erläutert, wie Sie Link-Helfer erstellen, mit denen Sie Ihre Methoden zum Hinzufügen von Hyperlinks und Mailto-Links in Ihren Webanwendungen verbessern können.
Ja, es gibt nichts Schöneres als zeitsparende Geräte, die das Leben einfacher machen. Es gibt viele nützliche Tools, die Ihren Workflow verbessern können, von CSS-Grids und Layouts bis hin zu voll entwickelten Content-Management-Systemen und -Frameworks.
Dieses Tutorial befasst sich jedoch mit dem Konzept der PHP-Hilfsfunktionen und der Beschreibung allgemeiner Snippets für Ihre Site, die Sie immer wieder verwenden können. Dies sind Funktionen, die den Codierungsprozess beschleunigen und bereinigen, so dass sich wiederholende Aufgaben minimiert werden können und Sie mehr Zeit damit verbringen können, sich um die wichtigen Dinge im Leben zu kümmern… wie zum Beispiel das Abendessen.
Eine der häufigsten sich wiederholenden Aufgaben, die wir selbst schreiben müssen, ist der Hyperlink. Durch das Erstellen einer Hilfsfunktion können Sie Zeit sparen, wann immer Sie eine schreiben müssen, eventuelle Syntaxfehler vermeiden und sicherstellen, dass der Code leicht zu aktualisieren ist, wenn Dateien verschoben werden oder wenn Sie eine Website auf eine andere verschieben Domain. Zu Beginn erstellen wir eine sehr einfache Funktion in einer Datei namens helpers.php:
Auf dieses kleine Baby kann immer dann verwiesen werden, wenn wir den vollständigen Pfad zu einer Datei benötigen, und es kann während der Entwicklung Ihrer Website immer wieder darauf verwiesen werden. Dies ist eine nützlichere Methode als das einfache Aufrufen der Domäne mit der Methode $ _SERVER ['HTTP_HOST'], da sich dies nicht ändert, wenn jemand die Domäne mit oder ohne "www" eingegeben hat. Wenn Ihre Site aktiv ist, funktioniert sie problemlos eine Subdomain, zum Beispiel "http: // localhost / my-site".
Es ist auch beim Verschieben der Site äußerst nützlich, da alle absoluten Pfade sich auf diese einzelne Funktion beziehen. Wenn Sie also die $ domain-Variable in die neue Domäne umwandeln, werden alle Ihre Links in einem einzigen Durchgang auf der gesamten Site geändert.
Rationalisieren Sie diesen Code
Nun wollen wir eine neue Funktion namens "Anker" erstellen, die eine kompatible Standardzeichenfolge von HTML mit einem Titel ausgibt. Hier ist ein Beispiel für das, was wir ausgeben möchten:
Neue SeiteUnd hier möchten wir eigentlich tippen:
Echo Anchor ('new-page.php', 'New Page'));Hier wird also auf eine PHP-Funktion verwiesen, bei der zwei Variablen übergeben werden: eine für den Link und eine für den Anzeigetext. Wir können also jetzt noch in unserer Datei helpers.php die neue Funktion schreiben:
Funktionsanker ($ link, $ text) // 1 $ domain = get_domain (); // 2 $ link = $ domain. $ link; // 3 $ data = ''; $ data. = $ text; // 4 $ data. = ""; $ data zurückgeben;
- Hier richten wir die Funktion "Anker" mit zwei Übergabevariablen ein.
- Den Domainnamen erhalten wir dann von der bereits erstellten Funktion get_domain ()
- Als nächstes hängen wir die an die Funktion gesendete Variable $ link an.
- Wir beginnen dann mit dem Erstellen der Ausgabezeichenfolge in einer Variablen namens $ data und verwenden die $ text-Variable, um sowohl den sichtbaren Text für die Site als auch den "title" -Tag für den Link zu verdoppeln.
Jetzt können wir das testen. Erstellen Sie eine neue Datei namens index.php im selben Ordner wie diese Datei helpers.php und geben Sie Folgendes ein:
erfordern ('helpers.php'); Echo Anchor ('new-page.php', 'New Page'));Hier haben wir die beiden Dateien mit der Funktion requir () verbunden und dann die Funktion anchor () aufgerufen, mit der zwei benutzerdefinierte Variablen gesendet wurden. Wenn Sie dies in einem Browser testen, sehen Sie unser gewünschtes Ergebnis:
Neue Seite
Machen Sie es flexibel
Diese einfache Funktion kann nützlich sein, wird sich aber sicherlich bald einschränken. Wir müssen drei neue Funktionen hinzufügen, bevor es wirklich großartig und flexibel wird. erstens eine Option zum Hinzufügen benutzerdefinierter Titel-Tags; zweitens, um CSS-Regeln hinzufügen zu können; und drittens eine Option, falls nötig, in einem neuen Fenster zu öffnen.
Sehen wir uns zuerst die benutzerdefinierten Titel-Tags an. Titel-Tags sind für SEO-Zwecke sehr wichtig, und wenn Sie sie derzeit nicht auf Ihre Links setzen, empfehle ich dringend, dass dies von nun an zur Gewohnheit wird. Diese Funktion wird Sie dazu zwingen, dies zu tun - da das Hinzufügen wesentlich einfacher ist. Wenn Sie keine manuell hinzugefügt haben, wird stattdessen eine Standardkopie des Anzeigetextes verwendet.
Funktionsanker ($ link, $ text, $ title) // 1 $ domain = get_domain (); $ link = $ domain. $ link; $ data = ''; $ data. = $ text; $ data. = ""; $ data zurückgeben;Hier ist also eine modifizierte und verbesserte Version unserer anchor () - Funktion.
- Jetzt haben wir eine dritte Variable, $ title, hinzugefügt.
- Anschließend prüfen wir, ob ein benutzerdefiniertes Titel-Tag eingegeben wurde.
- Wenn dies der Fall ist, fügen wir unserer Ausgabe $ data string einen Teil hinzu, der das title-Tag festlegt3.
- Wenn nichts eingegeben wurde, wird das Titel-Tag wie zuvor auf den Anzeigetext $ text gesetzt.
Nun, wenn wir unseren Funktionsaufruf in index.php ändern:
Echo Anchor ('new-page.php', 'New Page', 'Custom Title Message!');Wir werden mit dieser zufriedenstellenden Ausgabe enden:
Neue Seite
Styling- und Zieloptionen
Um sicherzustellen, dass wir diesen Helfer auch dann verwenden können, wenn benutzerdefinierte CSS- oder Ziel-Tags hinzugefügt werden müssen, fügen wir unserer Funktion jetzt einen Teil hinzu, der eine vierte Variable liest und die korrekte HTML-Datei entsprechend ausgibt.
Diese Funktion muss intelligent genug sein, um zu sehen, ob wir eine CSS-Klasse, eine CSS-ID oder ein Ziel-Tag einfügen möchten, und wir möchten auch mehrere Optionen oder eine einzelne Option oder keine Optionen einfügen können überhaupt. Zuerst wollen wir unsere Ankerfunktion ein wenig ändern:
Funktionsanker ($ link, $ text, $ title, $ extras) // 1 $ domain = get_domain (); $ link = $ domain. $ link; $ data = ''; $ data. = $ text; $ data. = ""; $ data zurückgeben;
- Als Erstes fügen wir eine vierte Durchlaufvariable hinzu, die "$ extras" genannt wird. Dies wird alle unsere zusätzlichen benutzerdefinierten Optionen enthalten.
- Als Nächstes prüfen wir, ob wir in dieser Variablen ein Array übergeben. Wir werden ein Array verwenden, wenn wir der Funktion mehrere Extras übergeben, zum Beispiel, wenn wir eine CSS-ID und eine andere CSS-Klasse für unseren Link benötigen.
- Wenn es sich um ein Array handelt, werden wir es durchlaufen und jedes Element durch eine neue Funktion namens "parse_extras" schieben. Diese Funktion nimmt an, welche zusätzlichen Bits wir eingegeben haben, und erstellt die korrekte, entsprechende HTML-Ausgabe.
- Wenn $ extras eine Zeichenfolge ist, bedeutet dies, dass wir nur eine Regel durchlaufen haben. So können wir unsere neue Funktion parse_extras () für den einzelnen Artikel ausführen. Nützlicherweise gibt die Funktion is_string () FALSE zurück, wenn die Variable leer ist. Wenn also nichts durch $ extras übergeben wird, wird bei diesem Code kein Code ausgeführt, und es wird übersprungen.
Jetzt müssen wir unsere neue Funktion parse_extras () erstellen:
Funktion parse_extras ($ rule) if ($ rule [0] == "#") // 1 $ id = substr ($ rule, 1, strlen ($ rule)); // 2 $ data = ''; // 3 return $ data; if ($ rule [0] == ".") // 4 $ class = substr ($ rule, 1, strlen ($ rule)); $ data = ''; $ data zurückgeben; if ($ rule [0] == "_") // 5 $ data = 'target = "". $ rule.' "'; $ data zurückgeben;Diese Funktion macht sich die Tatsache zunutze, dass alle unsere Extras mit einer eindeutigen Kennung beginnen. Wenn wir eine CSS-ID übergeben, beginnt sie mit einem Hash (#), wenn eine CSS-Klasse übergeben wird, beginnt sie mit einem Punkt (.). Wenn ein Ziel übergeben wird, wird es gestartet mit einem Unterstrich (_).
- Wir können das erste Zeichen einer Zeichenfolge mithilfe der Syntax $ string [0] überprüfen. Sie können es gewohnt sein, diese Syntax zum Abrufen des ersten Elements in einem Array zu verwenden, sie ist jedoch auch eine sehr hilfreiche und schnelle Methode, um bestimmte Zeichen in Zeichenfolgen zu finden.
- Als Nächstes erstellen wir eine neue Variable, unsere eingegebene $ -Regel, wobei das erste Zeichen abgeschnitten wird. Nachdem wir nun herausgefunden haben, wofür die Regel gilt, brauchen wir sie nicht mehr für unsere HTML-Ausgabe. Diese Kombination aus substr () und strlen () ist ein nützliches Snippet, um das erste Zeichen aus einer Zeichenfolge zu entfernen.
- Wir können jetzt unseren $ data-HTML-Ausgabestring erstellen, der zur Rückgabe bereit ist. Diese Methode kann jetzt wiederholt werden - erstens, wenn die $ -Regel eine CSS-Klasse ist, und dann, wenn es sich um ein HTML-Ziel-Tag handelt. Es ist erwähnenswert, dass wir das erste Zeichen für das Ziel-Tag nicht abschneiden müssen, da html im Gegensatz zu den CSS-Regeln den vorangehenden Unterstrich (_) verwendet.
Nachdem wir alle erforderlichen Funktionen erstellt haben, können wir zu unserer Datei index.php zurückkehren und unseren Anker () - Aufruf ändern.
Echo Anchor ('new-page.php', 'New Page', 'Custom Title Message!', '# special_link');Hier übergeben wir eine CSS-ID und erhalten eine Ausgabe von:
Neue SeiteWenn wir eine Reihe von Extras hinzufügen würden, falls Sie möchten, dass es in einem neuen Fenster geöffnet wird und eine bestimmte ID und Klasse hat (unwahrscheinlich, aber es lohnt sich, die Flexibilität vorzuführen!), Würden wir dies folgendermaßen tun:
$ extras = array ('# special_id', '. special_class', '_ blank'); Echo Anchor ('new-page.php', 'New Page', 'Custom Title Message!', $ extras);Hier stellen wir eine Array-Variable mit dem Namen "Extras" vor, um den Code aufgeräumt zu halten und ihn dann zusammen mit der anchor () - Funktion zu senden. Dies erzeugt die folgende Ausgabe:
Neue Seite
Mailto-Links
Abschließend wird beschrieben, wie Sie Mailto-Links in Ihren Anwendungen erstellen. Wir erstellen eine Funktion namens mailto (), die der Anker () - Funktion ziemlich ähnlich ist, mit einem wichtigen Unterschied: Wir implementieren eine Verschlüsselung in der HTML-Ausgabe, sodass die E-Mail-Adresse nicht von Spam durchsucht werden kann. und halten die E-Mail-Adressen Ihrer Kunden sicher.
Die Methode, die wir zum Ausblenden der E-Mail-Adresse verwenden, verwendet die ziemlich strenge str_rot13 () - PHP-Funktion, die einfach eine Zeichenfolge verwendet und alle alphabetischen Zeichen dreizehn Buchstaben im Alphabet vorschiebt. Wenn Sie jemals zu Pfadfindern gegangen sind, erinnern Sie sich wahrscheinlich daran, sich mit solchen Codes herumzumachen und zu entscheiden, dass Sie wahrscheinlich ein Spion werden würden, wenn Sie groß sind.
Die Chiffre gibt den Code unleserlich aus. Mit Hilfe der JavaScript-Funktion "Gegenmittel" können wir die Zeichen dreizehn Stellen im Alphabet zurückziehen und ihre ursprüngliche Bedeutung wiederherstellen. Da diese Funktion jedoch clientseitig ist, wirkt nur das Gegenmittel, und der Text kehrt zu seinem normalen Selbst zurück, wenn er auf einem Bildschirm angezeigt wird. Daher haben Spinnen, Crawler und Spambots zum größten Teil keine Ahnung, was sie lesen.
Es ist wahrscheinlich erwähnenswert, dass es viele Methoden gibt, Mailto-Links zu verbergen, einige sind viel sicherer als diese, andere weniger. Ich benutze diese Methode gerne und habe deshalb nie einen Spam bei meinen Kunden gesehen. Erwähnenswert ist auch, dass die JavaScript-Methode selbst von Christoph Burgdorfer entwickelt wurde und folgendermaßen aussieht:
Dies nimmt den unleserlichen String "Njrfbzr frperg fcl pbqr" und verschiebt alle Zeichen, sodass die Anzeige auf Ihrem Bildschirm folgendermaßen aussieht:
Toller geheimer SpionagecodeWenn Sie jedoch den Quellcode überprüfen, den die Spider und Crawler sehen werden, wird dieses Ergebnis nicht erwähnt. Es bleibt also verborgen.
Wir werden uns nicht mit den Besonderheiten dieses JavaScript auseinandersetzen, da dies ein PHP-Tutorial ist. Stattdessen untersuchen wir, wie wir dies in unserer neuen Funktion mailto () implementieren können.
Funktion mailto ($ email, $ text, $ title, $ extras) // 1 $ link = 'document.write ("'; // 4 $ data. = $ link; // 5 $ data. = '". Ersetzen Sie (/ [a-zA-Z] / g, Funktion (c) return String.fromCharCode ((c<="Z"?90:122)>= (c = c.CarCodeAt (0) +13)? c: c-26);)); '; $ data. = '"' if ($ title) // 6 $ data. = 'title ="'. $ title '"'; else $ data. = 'title ="'. $ text. '"'; if (is_array ($ extras)) foreach ($ extras als $ rule) $ data. = parse_extras ($ rule); if (is_string ($ extras)) $ data. = parse_extras ( $ extras); $ data. = ">"; $ data. = $ text; $ data. = ""; // 7 Rückgabe von $ data; // 8Schauen wir uns also an, was hier anders ist.
- Erstens übergeben wir noch vier Variablen an diese Funktion, obwohl wir die erste Variable aus kosmetischen Gründen in $ email umbenannt haben.
- Jetzt erstellen wir eine neue Variable mit der HTML-Ausgabe für den mailto-Link. Es ist erwähnenswert, dass wir vor den Anführungszeichen einen Backslash hinzugefügt haben, da diese Zeichenfolge später in der JavaScript-Funktion angezeigt wird, und wir müssen sicherstellen, dass die Anführungszeichen sie nicht verwechseln.
- Als Nächstes implementieren wir die Funktion str_rot13 () in der Variablen $ link, sodass sie codiert wird.
- Wir können dann unsere zurückgegebene $ data-Variable erstellen, die das zur Ausgabe bereite JavaScript enthält.
- Wir stellen unseren verschlüsselten $ -Link in die Mitte - bereit zum Übersetzen.
- Nachdem nun der $ data-Variablen JavaScript hinzugefügt wurde, wird der Rest der Funktion bekannt vorkommen.
- Wir prüfen, ob ein benutzerdefiniertes Titel-Tag hinzugefügt wurde, und analysieren dann wie üblich unsere $ -Extras. Wieder werden unsere Tags geschlossen…
- … Und die Daten zurücksenden.
Wir können jetzt die folgende Syntax in unserer index.php-Datei verwenden, um unseren mailto-Link aufzurufen:
echo mailto ('[email protected] ',' Contact Me ');Wenn Sie benutzerdefinierte Elemente wie zuvor benötigen, können Sie weitere Variablen hinzufügen:
$ extras = array ('# special_id', '. special_class', '_ blank'); echo mailto ('[email protected] ',' Kontakt mit mir ',' Kontakt mit deinem guten Kumpel Barry. ', $ Extras);
Fazit
Damit ist unser erster Streifzug in PHP-Hilfsfunktionen abgeschlossen. Dies ist im Wesentlichen die Spitze des Eisbergs. Nächstes Mal werden wir im Namen der Formularhelfer einige komplexere Tools überprüfen.
Die Formularerstellung und -validierung muss eines meiner Lieblingsspiele sein, wenn sie von Grund auf neu erstellt werden. Es gibt viel wiederholten Code, mühsames Schreiben und Fehlerquellen. Eine Reihe von Funktionen, die sowohl korrekt strukturierte Formulare ausgeben als auch die Postdaten auf gültige E-Mail-Adressen, Kennwörter, Zeichenfolgenlänge usw. prüfen, können ein echter Lebensretter sein. Ah ja, das Erstellen von HTML-Formularen von Grund auf muss nicht so stöhnend sein, wie Sie bisher gedacht haben.
Wenn Sie andere Ideen haben, was in einer PHP-Hilfsfunktion wirklich hilfreich wäre, kommentieren Sie Ihre Ideen unbedingt!