<?php

function clean_keyword($keyword){

#made by samlowry, http://with.in/
#v. 1.0

#1. remove se metaoperators (and their values in some cases), metawords
if(strpos($keyword,'allinurl:')!==false)return false;#delete all query metaoperators
$keyword=preg_replace('/(?:contains|date|ext|filetype|(has)?feed|hostname|info|inurl|ip|language|link(?:(?:from)?domain)?|loc(ation)?|related|safesearch|site|url):\S+/','',$keyword);#delete metaoperators+their values
$keyword=preg_replace('/(?:(?:all)?in(?:anchor|body|text|title)|prefer|safesearch):/','',$keyword);#delete metaoperators only
$keyword=preg_replace('/\b(?:OR|AND|NOT)\b/','',$keyword);#delete metawords
$keyword=preg_replace('/\$?\d+\.\.\$?\d+/','',$keyword);#delete range metacharacters and values

#2.remove stopcharacters between words

#old variant
#$keyword=preg_replace("/(?<=[\w&])[^\w&'\s]+(?=[\w&]+)/",' ',$keyword);#remove all stopchars except ' (replace to space)
#$keyword=preg_replace("/(?<=[\w&])'{2,}|'(?!s\b)(?=[\w&]+)/",' ',$keyword);#remove ' if not 's (replace to space)
#!attention! not saved [.,] chars in numbers, because hard to recognize correct numbers, like 100,000.01

#new variant
#to-do: keep ' in: \w's\b \wn't\b i'll i'd i'm i'am you're
$keyword=str_replace('$',' $',$keyword);#google reading word$number as word $number
$keyword=preg_split("/(?<=\D)[,.](?=\D)|(?<=\d)[,.](?=\D)|(?<=\D)[,.](?=\d)|[,.']{2,}|'(?![sdm]\b)|[^\w&',.$]+/",$keyword);#remove all stopchars except [,.$] in numbers and 's
foreach($keyword as $key=>$val){
    if(
preg_match('/[.,$]/',$keyword[$key])&&!preg_match('/(?<=^|[^\w,.$])\$?\d+(\,\d{3})*(\.\d+)?(?=[^\w,.]|$)/',$keyword[$key]))#verify american format of numbers ($100,000.01) in strings with [,.$]
        
$keyword[$key]=preg_replace('/[.,$]/',' ',$keyword[$key]);#if it's not correct american number - remove [,.$]
}
$keyword=implode(' ',$keyword);

#3. remove stopcharacters in start of words (se-metacharacters in most cases) except saved $
$keyword=preg_replace("/(?<=^|\s)[^\w&\$s]+(?=[\w&$]+)/",'',$keyword);

#4. remove stopcharacters in end of words
$keyword=preg_replace("/(?<=[\w&+])[^\w&+\s]+(?=\s|$)/",'',$keyword);

#5. remove single groups of stopcharacters
$keyword=preg_replace("/(?<=^|\s)[^\w&\s]+(?=\s|$)/",'',$keyword);

#6. compress spaces
$keyword=trim(preg_replace('/\s{2,}/',' ',$keyword));

return 
$keyword;
}

#echo clean_keyword("site:ya.ru inurl:ablh.html i'm i'n i'd ohh, my god. te_st.exe 10,000.01 100.00.00 maan+_\$how w_+$100.0 what's happened''''s man'z");
?>