Pagina 1 din 1

Căutare insensibilă la caractere românești

Scris: Dum Noi 21, 2010 7:57 pm
de anne25
Salut,

Caut o soluție la următoarea problemă: am text scris cu diacritice și aș vrea să apară ca rezultat dacă fac o căutare fără să folosesc diacritice.

De exmplu, pentru textul
Ana are roșii
atât "rosii" cât și "roșii" ar trebui să fie găsite.

Folosesc mysql, charset-ul bazei de date este utf8 -- UTF-8 Unicode iar collation-ul utf8_romanian_ci.

În baza de date, îl văd pe 'și' ca 'È™i' iar din php (folosesc Zend framework) ma sigur ca setez utf-8 encoding pt views.

Aveți idee de unde aș putea sa încep să rezolv problema?

Muțumesc.[/b]

Scris: Dum Noi 21, 2010 8:29 pm
de last1devil
Incearca cu str_replace();

$search = "Ana are roșii";

$s = array("ș", "ă", "î", "etc");
$r = array("s", "a", "i", "etc");

$new_search = str_replace($s, $r, $search);

Asa obtii un text fara diacritice.

Scris: Lun Noi 22, 2010 11:50 am
de spint

Scris: Mie Noi 24, 2010 12:14 am
de badtiger

Scris: Dum Sep 11, 2011 9:39 pm
de lugojan

Scris: Lun Noi 21, 2011 11:02 pm
de iulian30bv

Scris: Mie Noi 23, 2011 11:00 am
de vectorialpx
In editor trebuie setat encoding-ul de tip UTF-8 (orice editor care se respecta are aceasta optiune).

Apoi, in MySql... e OK varianta cu FULLTEXT dar nu ti-as recomanda REPLACE pentru ca va trebui sa-l faci nested de prea multe ori, adica

REPLACE( REPLACE( REPLACE( REPLACE pentru toate diacriticile ) ))

Iti sugerez sa faci replace-ul in PHP inainte de cautare. De exemplu, daca va cauta "roșii" va trebui sa faci o verificare pe fiecare cuvant, daca are diacritice si sa-l faci duplicat in varianta fara diacritice. Un fel de

[php]<?php
$cautare = explode ( ' ', $_POST['cautare'] );
$cuvinte = array();
foreach($cautare as $cuvant) {
// vezi ca mai sunt, nu le-am pus pe toate
if(preg_match('/[șȘăîțȚ]/', $cuvant)) {
$cuvinte[] = str_replace(array('ș','ă','î','etc'), array('s','a','i','etc'), $cuvant);
}
$cuvinte[] = $cuvant;
}
?>[/php]

si folosesti un implode ( ' ', $cuvinte ) pentru cautare FULLTEXT

Scris: Lun Dec 05, 2011 8:46 am
de mfwsro

Scris: Dum Ian 08, 2012 11:35 pm
de expertphp