Jump to content

Help with php grep search: splitting results into ind. links/URLs


minnemike14

Recommended Posts

Hello - hoping to find some direction with this. I think this is fairly simple for more experienced php coders but I'm having trouble with it. It's a php grep text string search that results in a list of files that contain the string.


 


Hoping to split the $results value (list of file names) into separate links to open the file. I was able to convert into a link for the first file listed, but it links to that same file for all the entries in the list. I assume that maybe an array of  $results needs to be created first rather than try and work with  $results at the end?



<?php

/**
* E.Yekta
* cafewebmaster.com
*/

define("SLASH", stristr($_SERVER[SERVER_SOFTWARE], "win") ? "\\" : "/");

$path = ($_POST[path]) ? $_POST[path] : dirname(__FILE__) ;
$q = $_POST[q];

function php_grep($q, $path){

$fp = opendir($path);
while($f = readdir($fp)){
if( preg_match("#^\.+$#", $f) ) continue; // ignore symbolic links
$file_full_path = $path.SLASH.$f;
if(is_dir($file_full_path)) {
$ret .= php_grep($q, $file_full_path);
} else if( stristr(file_get_contents($file_full_path), $q) ) {
$ret .= "$file_full_path\n";
}
}
return $ret;
}

if($q){
$results = php_grep($q, $path);
}



echo <<<HRD
<pre >
<form method=post>
<input name=path size=100 value="$path" /> Path
<input name=q size=100 value="$q" /> Query
<input type=submit>
</form>

$results

</pre >

HRD;

?>

php_grep.php

Link to comment
Share on other sites

Throwing all search results into one big string is indeed a poor choice. This may make sense for the shell of an operating system, but it makes absolutely no sense for a programming language.

 

So, yes, do return an array.

 

Besides that, why do you use stristr()? This gives you the entire substring from the first occurence of the search term. But you just want to know whether the search term exists within the string. That's what stripos() is for.

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.