Всем привет, ситуация такая. Есть штатный модуль mod_virtuemart_search, работает не в расширенном режиме. Но, есть маленькая особенность:
если у нас в магазине забит товар с артикулом ns001-p123-ba14 (обратите внимание на то что в артикуле присутствуют тире), а пользователь в поисковую форму забивает его вот так ns001p123ba14 ( тоесть без тире), то он этот товар не найдет. Или же наоборот - в артикуле тире нет, а юзер забивает с тире - ситуация повторяется, товар не найден. Я решил это дело исправить, и нашел (
вроде бы) функцию, которая отвечает за это дело ( файл
administrator/components/com_virtuemart/classes/ps_main.php)
function vmGetCleanArrayFromKeyword( $keyword ) {
global $database;
$keywordArr = array();
if( empty( $keyword )) return $keywordArr;
$keywords = explode( " ", $keyword, 10 );
foreach( $keywords as $searchstring ) {
$searchstring = trim( stripslashes($searchstring) );
$strlen = strlen($searchstring);
if( $strlen > 2 ) {
/*if( $searchstring[0] == "\"" || $searchstring[0]=="'" ) {
$searchstring[0] = " ";
}
if( $searchstring[strlen($searchstring)-1] == "\"" || $searchstring[strlen($searchstring)-1]=="'" ) {
$searchstring[strlen($searchstring)-1] = " ";
}*/
$searchstring = $database->getEscaped( $searchstring );
$searchstring = str_replace( '\"', '"', $searchstring );
$keywordArr[] = $searchstring;
}
}
return $keywordArr;
вот это
$searchstring = str_replace( '\"', '"', $searchstring );
так или иначе влияет на выдачу результатов поиска в зависимости от присутствующих символов. Но вот незадача - как я ни пытался, не могу корректно туда прописать те условия, что мне нужны.
А нужно вот что
Чтобы поиск искал только цифры и латинские буквы, но при этом игнорировал как лишние ( их нет в оригинальном коде) так и отсутствующие ( есть в оригинальном коде) символы ( тире, скобки, кавычки и т.д)
пример : артикул ns001-p123-ba14 ( именно так забит в магазине)
пользователь вводит ns001p123ba14 - товар находит
пользователь вводит ns0\01p1-23ba/14 - товар находит
но при этом, комбинация из букв и цифр должна совпадать с оригинальной, тоесть
артикул ns001-p123-ba
14пользователь вводит ns001p123ba
15 - товар
не находит.
Гуру php, подскажите как так сделать?