1. Elementos de preparação
1) Substitua o arquivo JS da fonte
Código JS:
function com_stewartspeak_replacement () {/* gerador de cabeçalho dinâmico de Stewart Rosenberger http://www.stewartspeak.com/headings/ Este script pesquisa através de uma página da web para elementos específicos ou gerais e substitui-os por imagens geradas dinamicamente, em conjunto por um script de servidor. Os dois primeiros parâmetros precisam ser modificados var testurl = "dynatext/carreging.gif"; // modificar no caminho da imagem correspondente var donotprintimages = false; var impressorcss = "substituição-print.css"; var hideFlicker = false; var hideflickercss = "replacement-creen.css"; var hideflickertimeout = 100; // modificações responsáveis podem ser feitas aqui/* ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- JavaScript. E pegue um refrigerante ou algo assim. Função substituiElector (Seletor, URL, WordWrap) {if (typeof Itens == "Undefined") itens = new Array (); itens [items.length] = {Seletor: Selector, URL: URL, WordWrap: WordWrap};} if (hideflicker) {document.write ('<link id = "hide-flicker" rel = "Sheet" Media = "Screen" href = "' + Hideflickercss + '" />'); 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 = "' + impressorcss + '" />' '); var test = new image (); test.onload = function () {imageLoaded = true; if (DocumentLoaded) substituição (); }; test.src = testurl + "? date =" + (new date ()). gettime (); addLoadHandLer (function () {documentLoaded = true; if (imageLoaded) substituição ();}); função documentload () {documentLoaded = true; if (imageLoaded) substituição ();} substituição da função () {for (var i = 0; i <items.length; i ++) {var elements = getElementsBySelector (itens [i] .selector); if (elements.Length> 0) para (var j = 0; j <elements.Length; j ++) {if (! Elements [j]) continue; VAR Text = ExtractText (Elements [J]); enquanto (elementos [j] .Haschildnodes ()) elementos [j] .RemoveChild (elementos [j] .FirstChild); var tokens = itens [i] .WordWrap? text.split (''): [texto]; for (var k = 0; k <tokens.length; k ++) {var url = itens [i] .url+"? text ="+escape (tokens [k]+'')+"& selettor ="+escape (itens [i] .selector); var imagem = document.createElement ("img"); image.className = "Substituição"; image.alt = tokens [k]; image.src = url; elementos [j] .appendChild (imagem); } if (donotPrintImages) {var span = document.createElement ("span"); span.style.display = 'nenhum'; span.className = "Print-text"; span.appendChild (document.createTextNode (text)); elementos [j] .appendChild (span); }}} if (hideflicker) setStylesheetState ('hide-flicker', false);} função addLoadHandler (handler) {if (window.addeventListener) {window.addeventListener ("carregamento", manipulador, false); } else if (window.attachevent) {window.attachevent ("onload", manipulador); } else if (window.onload) {var OldHandler = window.onload; window.onload = function Piggyback () {OldHandler (); manipulador (); }; } else {window.onload = handler; }} função setStylesheetState (id, ativado) {var sheet = document.getElementById (id); if (Sheet) Sheet.Disabled = (! Enabled);} Função ExtractText (elemento) {if (typeof element == "String") Return element; caso contrário, se (tipoof elemento == "indefinido") elemento de retorno; caso contrário, if (element.innerText) elemento de retorno.innerText; var text = ""; var crianças = element.ChildNodes; for (var i = 0; i <crianças.length; i ++) {if (crianças [i] .NodEType == 1) texto+= extraCTTEXT (crianças [i]); caso contrário, if (crianças [i] .NodeType == 3) texto += crianças [i] .NodEvalue; } retornar texto;} /* Encontra elementos na página que correspondem a uma determinada regra de seletor CSS. Algumas regras complicadas não são compatíveis. Com base na excelente função "getElementsBySelector" de Simon Willison. Código original (com comentários e descrição): http://simon.incutio.com/archive/2003/03/25/getElementsBySelector*/function getElementsBySelector (seletor) {var tokens = Selector.split (''); var currentContext = new Array (documento); para (var i = 0; i <tokens.length; i ++) {token = tokens [i] .place (/^/s+/, ''). substituir (// s+$/, ''); if (token.indexof ('#')> -1) {var bits = token.split ('#'); var tagname = bits [0]; var id = bits [1]; var elemento = document.getElementById (id); if (tagname && element.nodename.tolowercase ()! = tagname) retorna new Array (); currentContext = new Array (elemento); continuar; } if (token.indexof ('.')> -1) {var bits = token.split ('.'); var tagname = bits [0]; var className = bits [1]; if (! tagname) tagname = '*'; var encontrado = nova matriz; var foundCount = 0; for (var h = 0; h <currentContext.length; h ++) {var elements; if (tagname == '*') elementos = currentContext [h] .All? currentContext [h] .All: currentContext [h] .getElementsByTagName ('*'); else elements = currentContext [h] .getElementsByTagName (tagname); for (var j = 0; j <elements.Length; j ++) encontrado [FoundCount ++] = elementos [j]; } currentContext = nova matriz; var currentContextIndex = 0; para (var k = 0; k <found.length; k ++) {if (encontrado [k] .className && encontrado [k] .className.match (new regexp ('// b'+className+'// b'))) currentContext [currentContextIndex ++] = encontrado [k]; } continuar; } if (token.match (/^(/w*)/[(/w+) ([= ~/|/^/$/*]?) =? "? ([^/]"]*) "?/] $/)) {var tagName = regexp. $ 1; varrname = regexp. $ 2; TAGNAME (! CurrentContet [H]. AttValue; Regexp ('+attrvalue+'-? ')); Case '$': Função de verificação = e) Retorno (E.GetAttribute (AttName) .LastIndexof (attValue) == E.GETATATTRIBUTO (AttName). Verificação de verificação = função (E.GETATTRIBUIÇÃO DE RETORNO (ATRIGADO); Array, Var FoundCount = 0; execute codeif (document.createElement && document.getElementsByTagName &&! Navigator.UserAgent.Match (/Opera //? 6/i)) com_stewartspeak_replacement ();2) Gere o arquivo php da imagem
<? php/* gerador de cabeçalho dinâmico de Stewart Rosenberger http://www.stewartspeak.com/headings/ Este script gera imagens PNG de texto, escritos na fonte/tamanho que você especifica. Essas imagens PNG são passadas de volta ao navegador. Opcionalmente, eles podem ser armazenados em cache para uso posterior. Se uma imagem em cache for encontrada, uma nova imagem não será gerada e a cópia existente será enviada ao navegador. A documentação adicional sobre os recursos de manuseio de imagens do PHP pode ser encontrada em http://www.php.net/image/ */$ font_file = 'Trebuc.ttf'; // o#a RapedCFFF#; ; $ transparent_background = true; $ cache_images = true; $ cache_folder = 'cache';/* ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ; $ send_buffer_size = 4096; // Verifique se há suporte para GD (! function_exists ('imageCreate')) fatal_error ('erro: o servidor não suporta geração de imagem PHP'); // Limpe o textif (vazio ($ _ get ['text']))) fatal_error ('erro: nenhum texto especificado.'); $ text = $ _get ['text']; if (get_magic_quotes_gpc ()) $ text = stripslashes ($ text); $ text = javascript_to_html ($ text); // Procure por cópia em cache, envie se existir $ hash = md5 (basename ($ font_file). $ font_size. $ font_color. $ background_color. $ transparent_background. '/'. $ hash. $ extension; if ($ cache_images && ($ file = @fopen ($ cache_filename, 'rb'))) {header ('content-type:'. $ mime_type); while (! feof ($ file)) print (($ buffer = fread ($ file, $ send_buffer_size))); fclose ($ arquivo); exit;} // Verifique a disponibilidade da fonte $ font_found = is_retable ($ font_file); if (! $ font_found) {fatal_error ('erro: o servidor está ausente da fonte especificada. hex_to_rgb ($ font_color); $ dip = get_dip ($ font_file, $ font_size); $ box = @imagettfbbox ($ font_size, 0, $ font_file, $ text); $ image = @imagecreate ($ box [2]-$ ! $ caixa) {fatal_error ('Erro: o servidor não conseguiu criar esta imagem do cabeçalho. ImageColorAllocate ($ imagem, $ font_rgb ['vermelho'], $ font_rgb ['verde'], $ font_rgb ['azul']); ImagettfText ($ imagem, $ font_size, 0,-$ box [0], abs ($ box [5]-$ box [3])-$ box [1], $ font_color, $ font_file, $ text); // defina transparentif ($ transparent_background) imageColortransparent ($ imagem, $ background_color); Cabeçalho ('Content-Type:'. $ MIME_TYPE); ImagePng ($ image); // Salvar cópia da imagem para cacheif ($ cache_images) {@imagePng ($ image, $ cache_filename);} ImagemEstroy ($ image); saída ; /* Tente determinar o "DIP" (pixels caiu abaixo da linha de base) desta fonte para esse tamanho. 'Abcdefghijklmnopqrstuvwxyz'. '1234567890'. '! @#$%^&* ()/' "//;.,` ~ <> [] {}-+_- = '; $ box = @imagettfbbox ($ size, 0, $ font, $ test_chars); retorno $ Navegue como um código 500. ImageColorAllocate ($ Image, 255.255.255); Cabeça de código ("HTTP/1.0 500 Erro de servidor interno"); if (Subster ($ Hex, 0,1) ==#') $ Hex = Substrinho ($ Hex, 1); substantivo ($ hex, 2,1); $ rgb ['azul'] = HEXDEC (substrato ($ Hex, 4,2); preg_match_all ('/%u ([0-9a-f] {4})/i', $ text, $ corresponde); '&#'. hexdec ($ corresponde [1] [$ i]). ';', $ text);3) Fontes necessárias
Aqui você coloca o eu necessário no mesmo diretório que os arquivos JS e PHP (você também pode modificá -lo, mas o arquivo correspondente também precisa ser modificado)
4) Biblioteca GD2 do PHP
2. Código HTML implementado
<? php // carregar a biblioteca pop-ut // requer_once 'incluir/popup_utils.inc.php';?> <! doctype html public "-// w3c // dtd xhtml 1.1 // pt "" http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd "> <html> <head> <title> Otimização do mecanismo de pesquisa profissional com php: tabela de tabela </title> <script type =" text/javascript "= =" " src = "dynatext/replacement.js"> </script> </head> <corpo onload = "window.resizeto (800.600);" OnResize = 'setTimeout ("Window.resizeto (800.600);", 100)'> <h1> Otimização do mecanismo de pesquisa profissional com PHP: ÍNDICE </H1> <? // display_popup_navigation (); ?> <ol> <li> Você: Marketing de programador e mecanismo de pesquisa </li> <li> Um iniciador no SEO básico </li> <li> URLs provocativos para seas se amigáveis </li> <li> Realocação de conteúdo e codos de status http </li> <li> Duplicar conteúdo </li> <li> serindar o sinalizador de sincrendly HTMl e JiScring, <li> Just, <li> <li> <li> serindar o HTML HTML BookMarking </li> <li> Capéu preto SEO </li> <li> Sitemaps </li> <li> Link Bait </li> <li> IP Coberting, geo-direcionamento e entrega de IP </li> <li> Linguagem FailMe Seo </li> <li> Coping com questões técnicas </li> <li> Site: WebLog?3. Comparação antes e depois do uso
Antes de usar
Após o uso