[PHP] ricerca caratteri accentati

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
una mia curiosità in quanto lo script che ho fatto ora funziona e questa è la cosa principale.
comunque vorrei sapere il perchè.
ho fatto un piccolo motore di ricerca che cerca una parola e una piccola frase in un testo, inserendola mi mostra i link di tutte le pagine in cui la parola o la frase viene trovata.
il problema è nato con le parole che contencono caratteri accentati (à, è....).
prendiamo ad esempio che nella pagina ci sia il testo Arquà Petrarca

1° prova
lo script che cerca la parola/frase era
PHP:
if (preg_match("/\b".$cerca."\b/i", $speciale)){
    //.....
    }//.....
dove $cerca la parola/frase da cercare e $speciale il testo dove cercare
inserendo nel form di ricerca Arquà o Arquà Petrarca sempre corrispondenza non trovata

2° prova
mi sono ricordato che nell'html non è scritto Arquà Petrarca, ma Arquà Petrarca per cui, dopo varie prove ho corretto lo script in
PHP:
$rep=array('à','è','é','ì','ò','ù');
$con_01=array('à','è','é','ì','ò','ù');
$cerca_01=str_replace($rep, $con_01, $cerca);
//...
if (preg_match("/\b".$cerca."\b/i", $speciale) || preg_match("/\b".$cerca_01."\b/i", $speciale)){
    //.....
    }//.....
e primo mistero
inserendo Arquà -> corrispondenza non trovata
inserendo Arquà Petrarca -> crea il link alla pagina in cui la frase c'è

3° prova
dopo vari esperimenti ho modificato l'array $con aggiungendo uno spazio dopo il ;
PHP:
$con_01=array('à ','è ','é ','ì ','ò ','ù ');
risultato
inserendo Arquà -> crea il link alla pagina in cui la parola c'è
inserendo Arquà Petrarca -> corrispondenza non trovata

4° prova
che finalmente funziona
PHP:
$rep=array('à','è','é','ì','ò','ù');
$con_01=array('à','è','é','ì','ò','ù');
$con_02=array('à ','è ','é ','ì ','ò ','ù ');
$cerca_01=str_replace($rep, $con_01, $cerca);
//...
if (preg_match("/\b".$cerca."\b/i", $speciale) || preg_match("/\b".$cerca_01."\b/i", $speciale) || preg_match("/\b".$cerca_02."\b/i", $speciale)){
    //.....
    }//.....
risultato
inserendo Arquà -> crea il link alla pagina in cui la parola c'è
inserendo Arquà Petrarca -> crea il link alla pagina in cui la frase c'è

chi sa spiegarmi il mistero di quello spazio che esiste e non esiste?
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Hai provato una cosa del genere per trovare i caratteri unicode con le regex? Potrebbe semplificarti lo script.
Codice:
preg_match('/[\p{L}]+/u', $text);

Dove $text può essere.. " Matatàèéìòù ", ho provato qui e funge..
https://regex101.com/r/uSylSL/1
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
si quello trova i caratteri unicode, ma non devo solo cercare il carattere, ma o una parola o una frase
nell'html ho ad esmpio
HTML:
<p>
una gita al sole<br />
oggi mi sono recato ad Arqu&agrave; Petrarca con il sole
</p>
deve trovarmi la pagina sia cercando solo Arquà o cercando Arquà Petrarca, da input del form
tra l'altro ho dovuto lasciare i caratteri non trasformati in quanto su alcuni vecchi file il carattere risulta come è, cioi es. ì e non &igrave; (per quello l'OR nell'if).
comunque quello che non capisco è se cerco una parola singola devo aggiungere uno spazio e se invece la parola è nella frase no

p.s.
avevo comunque già provato con altri metodi vari preg, htmlspecialchars ecc....

dimenticavo
in quel preg_match("/\b".$cerca."\b/i".... $cerca contene la parola o la frase (Arquà o Arqua Petrarca) che sto cercando nel test $speciali
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Questo potrebbe interesarti: usando \b".$cerca."\b la regex è soddisfatta quando la parola è preceduta o seguita da un terminatore di parola ( spazio, punto, punto esclamativo, virgola, coppia di virgolette, inizio e fine stringa.. )
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Ricerca sviluppatori PHP tempo indeterminato Milano Offerte e Richieste di Lavoro e/o Collaborazione 0
S [PHP] Creare collegamento filtri di ricerca al database PHP 6
L [PHP] Ricerca su search bar esterna PHP 1
Alex_70 [PHP] Ricerca con risultati cliccabili PHP 21
ANDREA20 [PHP] motore di ricerca nel sito PHP 11
O [PHP] Ricerca record tramite post PHP 7
T [PHP] Ricerca nel database PHP 2
C [PHP] Ricerca multipla, evitare if PHP 4
M [OFFRO][RETRIBUITO] Milano IT Consulting SRL - Ricerca 1 Consulente PHP Offerte e Richieste di Lavoro e/o Collaborazione 0
andreas88 Da .htm a .php, perdo le mie posizioni su Google ricerca? SEO e Posizionamento 9
Emix [PHP] Ricerca e modifica su due tabelle PHP 26
G [PHP] FORM DI RICERCA ESTESA PHP 2
P [PHP] ricerca dati PHP 1
Emix [PHP][MYSQL] Ricerca avanzata tramite form PHP 6
T4MAR4 [PHP] Problema ricerca con apostrofo PHP 2
R [PHP] Prendere dati da moduli di ricerca esterni PHP 4
T4MAR4 [PHP] piu select in ricerca PHP 1
T4MAR4 [PHP] Inserire piu campi di ricerca PHP 2
A [PHP] Problema paginazione motore di ricerca PHP 48
TheWhiteRabbit Perfezionare ricerca in PHP - NO DATABASE - (Website X5) PHP 5
sandropochi [PHP] Form per creare filtro di ricerca su DB PHP 8
U [PHP] form per ricerca multipla: Unknown column 'undefined' in 'where clause' PHP 2
giuseppe_123 [PHP] ricerca in una tabella con my sql PHP 0
L [PHP] ricerca per un campo o per più campi PHP 5
M [PHP] Ricerca con data timestamp PHP 45
B Ricerca PHP e Prenotazione PHP PHP 2
M [PHP] Evidenziare le parole cercate nei risultati di una ricerca PHP 1
MarcoGrazia [PDO][PHP[MySQL] Piccolo modulo di ricerca in un sito tramite l'operatore LIKE Snippet PHP 0
Y [Retribuito][Offro] RICERCA PROGRAMMATORI iOS e PHP/DB Offerte e Richieste di Lavoro e/o Collaborazione 0
S Un aiuto su uno script di ricerca avanzata in php che sto verificando. PHP 1
I Motore di ricerca php PHP 2
C [Offro][Retribuito] Cloudworks srl ricerca un junior PHP developer Offerte e Richieste di Lavoro e/o Collaborazione 0
N PHP Ricerca utente, Tabella con più elementi PHP 8
M motore di ricerca complesso php PHP 2
R Barra ricerca php e mysql PHP 0
R Ricerca Email in database mysql con php PHP 2
S [RISOLTO]aiuto, non riesco afar funzionare il camp odi ricerca per un DB con PHP PHP 5
M Box di ricerca in php PHP 3
P PHP modulo ricerca e ordine alfabetico PHP 5
G Visualizzazion modulo di ricerca in PHP e MySql PHP 0
A Ricerca full text mysq ed estrazione con php PHP 8
G Php problema con risultato di ricerca PHP 2
I Facile.it Spa ricerca Senior PHP Developer forti ed ambiziosi! Offerte e Richieste di Lavoro e/o Collaborazione 0
K Problema ricerca con piu campi in php PHP 3
Sargon Php / My sql motore di ricerca PHP 21
F Ricerca avanzata PHP & MySQL PHP 4
P PHP Workgroup Livorno, RICERCA giovani programmatori! Offerte e Richieste di Lavoro e/o Collaborazione 1
W [Php - MySql] ricerca con form select diversi PHP 14
A mini motore di ricerca in php PHP 3
A funzione ricerca in php??? help me... PHP 1

Discussioni simili