Hello. I'm new in this and just wanted to upgrade my company website by myself, since everyone charging me fly-high prices for this. So I founded a search script in web and it is almost perfect for me. Missing 1 thing - If I enter the keyword 'SK1' and if there is anywhere in the file written 'SK11' or SK12' it brings me all the results. So I just want to get a exact match for the entered keyword. I know the script is long, but if someone could help me, I would appreciate it. I've tryed to search by myself, but it is not for my knowledge. Thank you
It looks like this:
<?php
// You may translate the string values here under to your native languages.
$buttonvalue = "Check";
$search_at = "Collection in ";
$search_result = "information";
$pages = "Number of pages with hits";
$to_small = "At least two characters is required";
$recursive = true; // Change to false if no searching should be done in subdirectories.
$html = <<<HTML
<p><br /></p>
<form name="form" action="">
<input type="text" name="search" size="30" />
<input type="button" value="$buttonvalue"
onclick='window.location.assign(document.URL.substring(0,document.URL.indexOf("?")) + "?search=" + document.form.search.value.replace(/ /g,"%100"))' />
</form>
<!-- Please do not remove or change this link to the application's site. Others might like it too. -->
<small>Enter first part of your post code (ex. RM10)</small><br />
HTML;
echo $html;
function textpart($body, $search) {
// Displays the text after the title
$length = 30;
$text = substr($body, max(stripos($body,$search) - $length, 0), strripos($body,$search) - stripos($body,$search) + strlen($search) + 1 * $length);
if (strripos($text, " ") < strripos($text,$search)) {
$text = $text . " ";
}
if (stripos($text, " ") != strripos($text, " ")) {
$text = substr($text, stripos($text, " "), strripos($text, " ") - stripos($text, " "));
}
$temp = $text;
$stop = substr($text, strripos($text, $search) + strlen($search));
if (strlen($stop) > $length) {
$stop = substr($text, strripos($text, $search) + strlen($search), $length);
$stop = substr($stop, 0, strripos($stop, " "));
}
$text = "... ";
while (stripos($temp,$search)) {
$temp = substr_replace($temp, "<b>", stripos($temp, $search), 0);
$temp = substr_replace($temp, "</b>", stripos($temp, $search) + strlen($search), 0);
$text = $text . substr($temp, 0, stripos($temp, "</b>") + 1);
$temp = substr($temp, stripos($temp, "</b>") + 1);
if(stripos($temp, $search) > (2 * $length)) {
$text = $text . substr($temp, 0, $length);
$text = substr($text, 0, strripos($text, " ")) . " ... ";
$temp = substr($temp, stripos($temp, $search) - $length);
$temp = substr($temp, stripos($temp, " "));
}
}
$text = $text . $stop . " ... ";
echo $text;
return;
}
function compress($string, $first, $last) {
// Removes everything in $string from $first to $last including $first and $last
while(stripos($string,$first) && stripos($string,$last)) {
$string = substr_replace($string, "", stripos($string,$first), stripos($string,$last) - stripos($string,$first) + strlen($last));
}
return $string;
}
function directoryToArray($directory, $recursive) {
$array_items = array();
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (is_dir($directory. "/" . $file)) {
if($recursive) {
$array_items = array_merge($array_items, directoryToArray($directory. "/" . $file, $recursive));
}
} else {
$file = $directory . "/" . $file;
$array_items[] = preg_replace("/\/\//si", "/", $file);
}
}
}
closedir($handle);
}
return $array_items;
}
function filewalk($file, $search, $counter, $webpath) {
// Selects and treats files with the extension .htm and .html and .asp and .php
if (strtolower(substr($file, stripos($file, ".htm"))) == ".htm"
|| strtolower(substr($file, stripos($file, ".html"))) == ".html"
|| strtolower(substr($file, stripos($file, ".asp"))) == ".asp"
|| strtolower(substr($file, stripos($file, ".php"))) == ".php") {
$all = file_get_contents($file);
$body = substr($all, stripos($all,"<body"),stripos($all,"</body>") - stripos($all,"<body"));
$body = preg_replace('/<br \/>/i', ' ', $body);
$body = preg_replace('/<br>/i', ' ', $body);
$body = compress($body,"<noscript","</noscript>");
$body = compress($body,"<script","</script>");
$body = compress($body,"<iframe","</iframe>");
$body = compress($body,"<noframe","</noframe>");
$body = strip_tags($body);
$body = html_entity_decode($body, ENT_QUOTES);
$body = preg_replace('/\s+/', ' ', $body);
// Scans and displays the results
if (stripos($body, $search)) {
$title = substr($all, stripos($all,"<title>") + 7,stripos($all,"</title>") - stripos($all,"<title>") - 7);
$title = html_entity_decode($title, ENT_QUOTES);
$title = preg_replace('/\s+/', ' ', $title);
echo '<p>' . $title . '</a></br>';
echo '</br><a href="postcodecheck.php">>> Go Back << </a> ';
$counter = $counter + 1;
}
}
return $counter;
}
// Reads the search text from the page's URL
$url = $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://';
$url .= $_SERVER['SERVER_PORT'] != '80' ? $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"] : $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (stripos($url,"?search=")) $search = $_GET['search'];
$webpath = dirname($url);
// Starts searching
if (strlen($search) < 2 && trim($search) <> "") {
echo '<p>' . $to_small . '!</p>';
$search = "";
}
if (trim($search) <> "") {
echo "<p>" . $search_at . " '<b>" . $search . "</b>' " . $search_result . ".</p>";
$counter = 0;
// Path to the folder containing this file
$curdir = getcwd();
// Opens the folder and read its contents
if ($dir = opendir($curdir)) {
$files = directoryToArray("./", $recursive);
foreach ($files as $file) {
$counter = filewalk($file, $search, $counter, $webpath);
}
closedir($dir);
}
}
?>