| 
	
 | 
 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] 
 |