Изключване на някои символи при сравняване в заявка.

Doris

Registered
Искам при заявка към база данни с LIKE да не се отчита наличието на някои символи в стринговете - . и , и " както в низа, който се взема от базата, така и в низа, който се подава за сравнение. Как да стане най-бързо?
 
Еми използвай REGEXP вместо LIKE. Пусни си един регулярен израз и вади. А ако искаш да ги изчистиш мини предварително с регулярен израз.
 
Ами не, не искам да ги изчиствам. Искам като търся например изрази, които включват "10 клас" да ми излизат и резултати за "10. клас". И обратното: ако търся израз, включващ "10. клас" да ми излизат и резултати с "10 клас". Тоест съществуването на точката да е без значение.
 
Doris каза:
Ами не, не искам да ги изчиствам. Искам като търся например изрази, които включват "10 клас" да ми излизат и резултати за "10. клас". И обратното: ако търся израз, включващ "10. клас" да ми излизат и резултати с "10 клас". Тоест съществуването на точката да е без значение.
PHP:
$search = $_POST['search'];//(примерно)
$search = str_replace(array(' ','.',',','-'),"%",$search);//превръща интервалите, точките, тиретата и запетайките в знак %
$search = preg_replace("/^[%]+$/", "%", $a);//ако имаш повече от 1 последователни %, ги преобразуваш в един
$sql = "select * from table where text like '$search'";
Знакът процент означава все едно *(звездичка) в preg_match() - произволен брой символи.
Edit: сега видях, че искаш и точките да ги заместваш. Промених си поста.
 

Back
Горе