Jump to content
php.lv forumi

Case insensitive meklēšana


aywars

Recommended Posts

Ir vēlme uztaisīt case insensitive meklēšanu, tā lai nebūtu atšķirības kā lietotājs ieraksta meklējamo vārdu : Vārds, vārds, VĀRDS vai VāRdS utt..

 

Izlasīju, ka, lai to panāktu, salīdzināmajiem vārdiem abiem ir jānomaina case uz lower vai upper.. Izdarīju ar lower tā:

 

$name = $_POST['name'];
$name = strip_tags($name);
$name = trim($name);
$name = strtolower($name);

$q = "SELECT * FROM tabula WHERE lower(name) LIKE '%$name%'";

 

bet tas nestrādā.. meklētājs atrod meklēto vārdu tikai tad, kad rakstu to lowercase..

 

Iesakiet lūdzu kādu risinājumu.. Vēlams lai tas strādātu arī ar garum- un mīkstinājum- zīmēm..

 

Pateicos!

 

p.s. Uz uppercase arī mēģināju abus pārveidot.. nesanāk..

Edited by aywars
Link to comment
Share on other sites

pirmkārt, vajag mysql_real_escape_string

 

otrkārt, vai nebija tā, ka defaultā mysql veic case insensitive meklēšanu? Tas ir, nevajag neko pārveidot uz lower/upper. vēl - ja jau pārveido, tad abus pārveido SQL izteiksmē, citādi var sanākt tie sarežģījumi ar garumzīmēm. Kā arī lauka charsetam jābūt utf8_general_ci vai utf8_unicode_ci.

Link to comment
Share on other sites

OK, pieliku mysql_real_escape_string.

 

Pēc maniem novērojumiem mysql neveic case insensitive meklēšanu defaultā. Tāpēc jau arī prasu. Mēģināju arī abus pārveidot sql vaicājumā - nekādu rezultātu. Ar charsetiem nav nekādu problēmu. Varbūt tomēr kāds var ieteikt risinājumu?

Link to comment
Share on other sites

domāju, ka problēma ir tā, ka lower funkcija tev šajā gadījumā neprot pārvērst Ā uz ā un sanāk 'vārds' LIKE '%vĀrds%' ... tikai minējums. izmanto case insensitive kodējumu, kas saprot latviešu burtus - utf8_general_ci vai latin_latvian_ci (? (biezpienu neēdu)) (ALTER TABLE ... utt.)

Link to comment
Share on other sites

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.   Paste as plain text instead

  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.

Loading...
×
×
  • Create New...