You are here: Re: PHP to AJAX - a little off topic « PHP Programming Language « IT news, forums, messages
Re: PHP to AJAX - a little off topic

Posted by shimmyshack on 11/28/07 15:50

On Nov 27, 1:25 am, John <John_nos...@nnnnnnnnn.nowhere> wrote:
> Thanks for the information.
>
> I just have one more question. If I keep it a PHP script, how can I
> add another php script like a yellow search highlighter? I have the
> yellow php highlighter script, but do not know how to include it?

well ok, this is a funny thing to do unless its a spellchecker.
you would have to send the complete text to be searched via ajax, and
return the same (but with some wrapped in tags which will of course be
the yellow parts) and replace the original text.

If you do it this way you may as well just use javascript:


function highlightWord(node,word)
{
// Iterate into this nodes childNodes
if (node.hasChildNodes)
{
var hi_cn;
for (hi_cn=0;hi_cn<node.childNodes.length;hi_cn++)
{
highlightWord(node.childNodes[hi_cn],word);
}
}

// And do this node itself
if (node.nodeType == 3)
{ // text node
tempNodeVal = node.nodeValue.toLowerCase();
tempWordVal = word.toLowerCase();
if (tempNodeVal.indexOf(tempWordVal) != -1)
{
pn = node.parentNode;
if (pn.className != "highlight")
{
// word has not already been highlighted!
nv = node.nodeValue;
ni = tempNodeVal.indexOf(tempWordVal);
// Create a load of replacement nodes
before = document.createTextNode(nv.substr(0,ni));
docWordVal = nv.substr(ni,word.length);
after = document.createTextNode(nv.substr(ni+word.length));
hiwordtext = document.createTextNode(docWordVal);
hiword = document.createElement("span");
hiword.className = "highlight";
hiword.appendChild(hiwordtext);
pn.insertBefore(before,node);
pn.insertBefore(hiword,node);
pn.insertBefore(after,node);
pn.removeChild(node);
}
}
}
}

function googleSearchHighlight()
{
if (!document.createElement) return;
ref = document.referrer;
ref = (ref) ? ref : location.search;
if (ref.indexOf('?') == -1) return;
qs = ref.substr(ref.indexOf('?')+1);
qsa = qs.split('&');
for (i=0;i<qsa.length;i++)
{
qsip = qsa[i].split('=');
if (qsip.length == 1) continue;
if (qsip[0] == 'q' || qsip[0] == 'p')
{ // q= for Google, p= for Yahoo
words = unescape(qsip[1].replace(/\+/g,' ')).split(/\s+/);
for (w=0;w<words.length;w++)
{
highlightWord(document.getElementsByTagName("body")[0],words[w]);
}
}
}
}

i think thats all you need for
http://www.example.org/letter.htm?q=hello

which will highlight the word hello

with the rules set by

..highlight
{
color : #000;
background-color : yellow;
}

if i'm wrong i'm wrong, but i think that will work, credit goes to
others for the bulk of that highligting code.

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация