1. Vorbereitungselemente
1) Ersetzen Sie die Schriftart JS -Datei
JS -Code:
Funktion com_stewartSpeak_replacement () {/* Dynamic Heading Generator von Stewart Rosenberger http://www.stewartspeak.com/headings/ Dieses Skript sucht über eine Webseite nach spezifischen oder allgemeinen Elementen und ersetzt sie durch dynamisch generierte Bilder in Konjunktion mit einer Server-Seite-Seite mit einer Server-Seite, die mit einer server-Seite-Seite mit einer server-Seite ersetzt wird, und ersetzt sie in Konjunktionen mit einer Server-Seite mit einer Server-Seite mit einer Server-Seite mit einem serverteiligen Elementen und ersetzt sie durch dynamisch generierte Bilder, in Konjunktion einer server-seiten Skript.*/Ersatz zur Auswahl ("H1", "dynatext/heading.php", true); // Die ersten beiden Parameter müssen modifiziert werden var testurl = "dynatext/lade.gif"; // an die entsprechenden Bildpfad var donotprintimages = var printercss = "Ersatz-Print.css"; var hideflicker = false; var hideFlickercs = "Ersatz-Screen.css"; var hideflickerTimeout = 100; // Verantwortliche Änderungen können hier vorgenommen werden/* --------------------------------------------------------------------------------------------------------------------------------------------------------- JavaScript. Und holen Sie sich ein Soda oder etwas.*/ Var items; var imageLoaded = false; var documentloaded = false; Funktion Ersatzelement (Selector, URL, WordWrap) {if (typeof items == "undefined") items = new Array (); items [items.Length] = {selektor: selector, url: url, wordwrap: wordwrap};} if (hideFlicker) {document.write ('<link id = "hide-flicker" rel = "styleSheet" media = "screen" href = "' + hideFlickercs + '' ''); window.flickerCheck = function () {if (! imageLoaded) setStylesheetstate ('hide-flicker', false); }; setTimeout ('window.flickerCheck ();', hideFlickertimeout)} if (Donotprintimages) document.write ('<link id = "print-text" rel = "styleSheet" media = "print" href = " + printercss +'" /> '); var test = new Image (); test.onload = function () {imageloaded = true; if (documentLoded) Ersatz (); }; test.src = testurl + "? Date =" + (New Date ()). GetTime (); addloadHandler (function () {documentloaded = true; if (imageLoaded) ersatz ();}); Funktion documentLoad () {documentLoded = true; if (imageLoaded) ersatz ();} Funktion Ersatz () {für (var i = 0; i <items.length; i ++) {var Elements = getElementsBySelector (Elemente [i] .Selector); if (Elements.length> 0) für (var j = 0; j <Elements.length; j ++) {if (! Elements [j]) Fortsetzung; var text = extractText (Elemente [j]); while (Elements [j] .Haschildnodes ()) Elemente [j] .Removechild (Elemente [J] .Firstchild); var tokens = items [i] .WordWrap? text.split (''): [Text]; für (var k = 0; k <tokens.length; k ++) {var url = items [i] .url+"? text ="+Escape (Tokens [k]+'')+"& selector ="+Escape (Elemente [i] .Selector); var image = document.createelement ("img"); Image.className = "Ersatz"; Image.alt = Tokens [k]; Image.src = url; Elemente [j] .AppendChild (Bild); } if (Donotprintimages) {var span = document.createelement ("span"); span.style.display = 'none'; span.className = "print-text"; Span.AppendChild (document.CreateTextNode (text)); Elemente [J] .AppendChild (Span); }}} if (hideFlicker) setStylesheetState ('hide-flicker', false);} Funktion addloadHandler (Handler) {if (window.adDeVentListener) {window.addeventListener ("laden", Handler, False); } else if (window.attachEvent) {window.attachEvent ("Onload", Handler); } else if (window.onload) {var oldHandler = window.onload; window.onload = function piggyback () {OldHandler (); Handler (); }; } else {window.onload = Handler; }} FunktionsetSetStylheetState (id, aktiviert) {var Sheet = document.getElementById (id); if (Blatt) Sheet.DISABED = (! Aktiviert);} Funktion extractText (Element) {if (typeof element == "String") Rückgabeelement; sonst wenn (typeof element == "undefined") Rückgabeelement; sonst wenn (Element.InNerText) returnelement.InnerText; var text = ""; var kids = element.childnodes; für (var i = 0; i <kids.length; i ++) {if (kids [i] .nodetype == 1) text+= extractText (kids [i]); sonst wenn (Kinder [i] .nodetype == 3) Text += Kinder [i] .nodeValue; } return text;} /* findet Elemente auf Seite, die mit einer bestimmten CSS -Selektorregel übereinstimmen. Einige komplizierte Regeln sind nicht kompatibel. Basierend auf Simon Willisons exzellenten "GetelementsBySelector" -Funktion. Ursprünglicher Code (mit Kommentaren und Beschreibung): http://simon.incutio.com/archive/2003/03/25/getElementsBySelector*/function getElementsBySelector (Selector) {var tokens = selector.split (''); var CurrentContext = New Array (Dokument); für (var i = 0; i <tokens.length; i ++) {token = tokens [i] .Replace (/^/s+/, ''). Ersetzen (// s+$/, ''); if (token.indexof ('#')> -1) {var bits = token.split ('#'); var tagname = bit [0]; var id = bit [1]; var element = document.getElementById (id); if (tagname && element.nodename.tolowerCase ()! = tagname) return New Array (); CurrentContext = New Array (Element); weitermachen; } if (token.indexof ('.')> -1) {var bits = token.split ('.'); var tagname = bit [0]; var className = bit [1]; if (! tagname) tagname = '*'; var found = new Array; var foundCount = 0; für (var h = 0; H <currentContext.length; H ++) {var Elements; if (tagname == '*') elements = currentContext [h] .All? currentContext [h] .All: currentContext [h] .GetElementsByTagName ('*'); elemente = currentContext [h] .GetElementsByTagName (TagName); für (var j = 0; j <elements.length; j ++) fand [foundCount ++] = Elemente [j]; } currentContext = new Array; var currentContextIndex = 0; für (var k = 0; k <found.length; k ++) {if (fand [k] .className && found [k] .className.match (neuer regexp ('// b'+className+'// b')) currentContext [CurrentContextIndex ++] = Found [k]; } weitermachen; } if (token.Match (/^(/w*)/[(/w+) ([= ~/|/^/$/*]?) =? "? ([^/]"]*) "?/] $/)) {var magname = regexp. $ 1; var attrname = regexp. $ 2; if (! TagName) tagname = '*'; CurrentContext [H]. (E.GetRibute (attrName) == attrValue; (E.GetRibute (attrname). (E.TRIBUT (ATTRNAME) .Intexof (attrValue) == 0); {return (E.GetRibute) .Intexof (attrValue)> -1); if (checkfunction (k]) CurrentContext [CurrentContextIndex ++] = Found [k]; J = 0; J <Elemente.Length; com_stewartspeak_replacement ();2) Generieren Sie die PHP -Datei des Bildes
<? php/* Dynamischer Überschriftengenerator von Stewart Rosenberger http://www.stewartspeak.com/headings/ Dieses Skript generiert PNG -Bilder von Text, geschrieben in der von Ihnen angegebenen Schriftart/Größe. Diese PNG -Bilder werden an den Browser zurückgegeben. Optional können sie für die spätere Verwendung zwischengespeichert werden. Wenn ein zwischengespeichertes Bild gefunden wird, wird kein neues Bild generiert und die vorhandene Kopie wird an den Browser gesendet. Zusätzliche Dokumentation zu den Image -Handhabungsfunktionen von PHP finden Sie unter http://www.php.net/image/ */$ font_file = 'trebuc.ttf ; $ transparent_background = true; $ cache_images = true; $ cache_folker = 'cache';/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ; $ send_buffer_size = 4096; // prüfen Sie, ob GD unterstützt (! function_exists ('Imagecreate')) fatal_error ('Fehler: Server unterstützt keine PHP -Bildgenerierung'); // textif (leer ($ _ _ _ text '])) fatal_error (' Fehler: kein Text angegeben. '); $ text = $ _get ['text']; if (get_magic_quotes_gpc ()) $ text = stripLashes ($ text); $ text = javascript_to_html ($ text); // Suchen Sie nach zwischengespeicherter Kopie, senden Sie, wenn es existiert $ hash = md5 (BasisName ($ font_file). $ font_size. $ font_color. '/'. $ hash. $ erweitert; if ($ cache_images && ($ file = @fopen ($ cache_filename, 'rb'))) {Header ('Inhaltstyp:'. $ mime_type); while (! feof ($ file)) print (($ buffer = fread ($ file, $ send_buffer_size))); fcLose ($ file); beenden;} // Schriftverfügbarkeit $ font_found = is_readable ($ font_file); if (! hex_to_rgb ($ font_color); $ dip = get_dip ($ font_file, $ font_size); $ box = @Imagettfbbox ($ font_size, 0, $ font_file, $ text); ! ImageColOralCode ($ image, $ font_rgb ['red'], $ font_rgb ['green'], $ font_rgb ['blau']); ImagettFtext ($ image, $ font_size, 0,-$ box [0], ABS ($ Box [5]-$ Box [3])-$ Box [1], $ font_color, $ font_file, $ text); // transparentif ($ transparent_background) imageColorTransparent ($ image, $ hINGHTE_COLOR); Header ('Inhaltstyp:'. $ mime_type); ImagePng ($ image); // Kopie des Bildes für cacheeif ($ cache_images) {@imagepng ($ image, $ cache_fileName);} ImagedStroy ($ image); Ausfahrt ; /* Versuchen Sie, das "Dip" (Pixel unter dem Ausgangswert unter dem Ausgangswert) dieser Schriftart für diese Größe zu bestimmen.*/Funktion get_dip ($ font, $ size) {$ test_chars = 'abcdefghijklmnopqrstuvwxyz'. 'Abcdefghijklmnopqrstuvwxyz'. '1234567890'. '! @#$%^&* ()/' "///;.,` ~ <> [] {}-+_- = '; Browser als 500 -Code stattdessen. ImageColoralcocation ($ Image, 255.255.255); Header ("HTTP/1.0 500 INTERNEHMENSCHAFT"); if ($ hex, 0,1) == '#') $ hex = substr ($ hex, 1); Substr ($ hex, 2,1); $ rgb ['blau'] = hexdec (Substr ($ hex, 4,2); preg_match_all ('/%u ([0-9a-f] {4})/i', $ text, $ Matches); '&#'. Hexdec ($ passt [1] [$ i]). ', $ text);3) Erforderliche Schriftarten
Hier setzen Sie das erforderliche Selbst in das gleiche Verzeichnis wie die JS- und PHP -Dateien (Sie können es auch ändern, aber die entsprechende Datei muss ebenfalls geändert werden)
4) GD2 -Bibliothek von PHP
2. Implementierter HTML -Code
<? Php // Laden Sie die Popup-Utils-Bibliothek // forderung_once 'include/popup_utils.inc.php';?> <! docType html public "-// w3c // dtd xhtml 1.1 // en" "http:/xhtml10.dtml10.tml10/dtml10/dtml1./Dtml1./Dtml1./Dtml1> <Head> <titels> Professionelle Suchmaschinenoptimierung mit PHP: Inhaltsverzeichnis </title> <script type = "text/javaScript" Sprache = "javaScript" src = "dynatext/ersatz.js"> </script> </head> <body onload = "window.resizeto (800,600);" OnResize = 'setTimeout ("window.Resizeto (800.600);", 100)'> <h1> Optimierung der professionellen Suchmaschinenoptimierung mit PHP: Inhaltsverzeichnis </h1> <? Php // Zeigen Sie die Popup -Navigation nur dann an, wenn Visitor von einem SERP // display_navigation () stammt. // display_popup_navigation (); ?> <ol> <li>You: Programmer and Search Engine Marketer</li> <li>A Primer in Basic SEO</li> <li>Provocative SE-Friendly URLs</li> <li>Content Relocation and HTTP Status Codes</li> <li>Duplicate Content</li> <li>SE-Friendly HTML and JavaScript</li> <li>Web Syndication and Social Bookmarking </li> <li> Schwarzer Hut seo </li> <li> Sitemaps </li> <li> Linkköder </li> <li> IP Cloaking, Geo-Targeting und IP-Lieferung </li> <li> Fremdsprache SEO </li> <li> Mit technischen Problemen </li> <li> Site-Klinik: Sie haben eine Websites. Weblog? </Li> <li> Einführung in den regulären Ausdruck </li> </ol> </body> </html>3. Vergleich vor und nach dem Gebrauch
Vor dem Gebrauch
Nach dem Gebrauch