| 
<?phpdefine("SEARCH_OUTPUT_MATCH", 'match');
 define("SEARCH_OUTPUT_FILENAME", 'filename');
 define("SEARCH_OUTPUT_MATCH_FILENAME", 'match_filename');
 
 /**
 * Search functionality (experimental).
 *
 * @param Environment $env
 *   The Environment.
 *
 * @param string $search_string
 *
 * @param Node $search_in_node
 *
 * @param array $search_fields
 *
 * @param string $search_output
 *
 * @return array
 */
 function search($env, $search_string = NULL, $search_in_node = NULL, $search_fields = array('body'), $search_output = SEARCH_OUTPUT_MATCH_FILENAME) {
 $search_dir = ($search_in_node == NULL) ? $env->dir['docroot'] : $search_in_node->realpath;
 $results_arr = array();
 if (empty($search_string)) {
 $search_string = $_REQUEST['search'];
 }
 $grep_params = array('-R', '-i', '-m100');
 
 if ($search_output == SEARCH_OUTPUT_MATCH || $search_output == SEARCH_OUTPUT_MATCH_FILENAME) {
 $grep_params[] = '-o';
 }
 $search_arr = array();
 foreach ($search_fields as $search_field) {
 $search_arr[] = $search_field . '\"\:\".*' . $search_string . '.*\"' ;
 
 }
 // TODO: VERY insecure!
 $search_cmd = "find " . $search_dir . " -type f | xargs grep " . implode(' ', $grep_params) . "  --include \*.json  '" . implode('|', $search_arr) . "' ";
 // $search_cmd = "find " . $page['dir']['docroot'] . " -iname=\"*.html\" -exec grep -r -i -o -m100 -P  '.{0,140}" . $_REQUEST['search'] . ".{0,140}' {} \; ";
 // Command with find: find "/Applications/MAMP/htdocs/websmenu"  -iname "*.html" -exec grep -r -i -o -m100  '.\{0,140\}mente.\{0,140\}' {} \;
 
 exec($search_cmd, $results_arr);
 return $results_arr;
 }
 
 |