|
11-25-2005, 06:57 AM | #1 |
Green Mole
Join Date: May 2004
Posts: 10
|
Extracting search results and using them in your own web pages
Hi all,
after a fair amount of hacking about, I worked out how to get the results of a phpdig search out of phpdig and into php and html code of my own design. This is not elegant and the programming is untidy. But perhaps a more skilled practitioner can use this code as a starting point for better things. The version it works with is 1.8.7 I actually use the code by including it in an iframe and passing the sole parameter, query_text as part of the src= url. I hope someone finds this useful Ciaran Code:
<?php /* -------------------------------------------------------------------------------- PhpDig Version 1.6.x This program is provided under the GNU/GPL license. See the LICENSE file for more information. All contributors are listed in the CREDITS file provided with this package. PhpDig Website : http://www.phpdig.net/ -------------------------------------------------------------------------------- THIS SCRIPT BASED ON SEARCH.PHP, BUT WITH CHANGES WHICH ALLOW THE EXTRACTION OF THE SEARCH RESULTS INTO AN ARRAY AND THEIR SUBSEQUENT PRESENTATION IN HTML OF YOUR CHOICE. */ $relative_script_path = '.'; if (is_file("$relative_script_path/includes/config.php")) { include "$relative_script_path/includes/config.php"; } else { die("Cannot find config.php file.\n"); } if (is_file("$relative_script_path/libs/search_function.php")) { include "$relative_script_path/libs/search_function.php"; } else { die("Cannot find search_function.php file.\n"); } // extract vars extract(phpdigHttpVars( array('query_string'=>'string', 'refine'=>'integer', 'refine_url'=>'string', 'site'=>'integer', 'limite'=>'integer', 'option'=>'string', 'lim_start'=>'integer', 'browse'=>'integer', 'path'=>'string' ) )); $template = "array"; $a = phpdigSearch($id_connect, $query_string, $option, $refine, $refine_url, $lim_start, $limite, $browse, $site, $path, $relative_script_path, $template, $adlog_flag, $rssdf, $template_demo); /* THE FOLLOWING LINES ARE USEFUL FOR DEBUG echo "<hr>"; print_r(array_keys($a)); echo "<hr>"; print_r(array_values($a)); echo "<hr>"; */ $out = array_values($a); $c = count($out); $heading = $out[4]; //extracts the header, which you can now hack any way you like $footer = $out[5]; //extracts the footer, which again you can hack. Since the footer contains multiple links to search.php, you need to change these to csearch.php $footer = preg_replace('/search.php/i','csearch.php',$footer); $footer = preg_replace('/<span[^>]*>/i','<span style="font-weight:bold; font-family:verdana; font-size:9pt; color:#536E99">',$footer); //this changes the formatting of the active page of the results that you're looking at. //$footer = preg_replace('/<\/span>/i','</b>',$footer); $head = $out[4]; //these next few lines replace the standard header with results x to y of z. No doubt there is a better, more phpdig, way to do this ! $needle = strpos ($heading,'total'); $heading = substr ($heading,0,$needle); $heading = str_replace(',',' of ',$heading); if (strpos($head,'total')!=FALSE) { $a = $out[19]; //itself an array starting at 1 - the results are in the 19th element of the returned array, for the first screen. if ($lim_start) $a = $out[20];//the results are in the 20th element of the returned array, for the second and subsequent screens. $out = array_values($a); //now $out has each search result in an array of its own. To get the names of the indices - its an associative array- enable the debug lines above. $hasresults=1; //a hack flag to stop the printing out of results when there are none. This is far from elegant.... } else { $heading = "No hits returned"; } ?> <html> <head> <style> a{text-decoration:none; font-family:verdana; font-size:9pt; color:#536E99} footer.a {text-decoration:none; font-family:verdana; font-size:5pt; color:#536E99} span.bolder{font-weight:bold} </style> </head> <body style="background-image: url(../images/grade.gif); background-repeat: repeat-x; "> <table width=100% border=0> <?php print("<font style=\"font-family:verdana; font-size:7pt; color: black\"> $heading </font> <br>"); //print out the header, which you formatted above $i = 0; while (($i < count($out)) and ($hasresults==1)) //this loop outputs the links. { $a = $out[$i]; //, the array with the results in it print(" <tr> <td style=\"padding-right:0.5em;\"> $a[page_link] </td> </tr> "); $i++; } print("</table> <div id=\"footer\"> "); echo $footer; //print out the footer, which you formatted above. echo "</div>"; ?> </body> </html> |
11-26-2005, 10:14 AM | #2 |
Green Mole
Join Date: Nov 2005
Posts: 1
|
You'll have to excuse me for being a bit thick, but what exactly do we do with this? Create a new php file for it, or overwrite everything in the search.php file, and use the <?PHP include "search.php" ?> tags?
This is all new to me |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
ok on the localhost shows no results on the web | Jam_1908 | Troubleshooting | 1 | 07-18-2005 03:53 PM |
Removing pages and artificially pushing search results to the top. | gazchap | How-to Forum | 1 | 04-27-2005 11:16 AM |
Indexing dynamically generated web pages | Dave A | Troubleshooting | 4 | 02-01-2005 11:03 AM |
Inserting the results of search into web page | Neo | How-to Forum | 3 | 10-09-2004 10:28 AM |