|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3958
|
[php] eregi_replace..ma
Ciao
le due righe sotto: Codice:
... $chiave = $_REQUEST['key']; $testo = eregi_replace($chiave, "<font color=\"#FF6666\">$chiave</font>",$testo); ... in pratica trovano la parola chiave da me inserita in un form e la "evidenziano" in un testo richiamato dal DB da un altro pezzo di codice. Il problema è che la sostituiscono pure, nel senso che se voglio fare una ricerca nel testo della parola "ville" il codice trova la parola esattamente (o villette e va bene lo stesso) ma se tale parola è scritta in maiuscolo la sostituisce con le lettere minuscole (es: VILLE con ville) e viceversa. Vorrei si che ritrovase nel codice le parole maiscole o minuscole che siano (e questo lo fa senza problema) ma non voglio assolutamente che le sostiuisca. Vorrei poi estendere la funzionalità della ricerca e ricerca anche più di una singola parola (ad esempio: "villette a mare che") ma non so come fare visto che il codice sopra non è ingrado di farlo e io conosco poco il php. Grazie e ciao |
![]() |
![]() |
![]() |
#2 |
Messaggi: n/a
|
considera che eregi_replace è case insensitive, ereg_replace no.
Probabilmente è per questo che ti vengono sostiuite le stringhe in uppercase. |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Aug 2002
Messaggi: 3958
|
Quote:
ma io voglio che siano trovate le parole con lettere sia minuscole che maiuscole (o miste) ma poi non devono essere sostiuite nella visualizzazione del testo. Ciao e grazie ancora |
|
![]() |
![]() |
![]() |
#4 |
Messaggi: n/a
|
allora ok va bene usare eregi_replace solo che il problema si pone nel momento in cui fai appunto il replace con il testo inserito in $chiave che a seconda che sia lowercase oppure uppercase sostituisce cmq tutte le stringhe con cui fà un match.
Lavora su questo io intanto appena posso ci penso. Non chiedetemi troppo sono niubbo di PHP e programmazione in generale. ![]() |
![]() |
![]() |
#5 |
Messaggi: n/a
|
una cosa del genere forse può funzionare:
<?php $chiave = $_POST["key"]; $chiave_lower = strtolower($chiave); $chiave_upper = strtoupper($chiave); $testo = ereg_replace($chiave_lower, "<font color=\"#FF6666\">$chiave_lower</font>",$testo); $testo = ereg_replace($chiave_upper, "<font color=\"#FF6666\">$chiave_upper</font>",$testo); ... ?> Fammi sapere ![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Nov 2001
Città: Gavirate (Varese)
Messaggi: 7168
|
Quote:
e se ci fosse scritto villE? ![]() ![]() ![]()
__________________
·.·´¯`·)»Davide«(·´¯`·.· edivad82:~#/etc/init.d/brain restart - edivad82:~# cd /pub && more beer |
|
![]() |
![]() |
![]() |
#7 | |
Messaggi: n/a
|
Quote:
![]() Hai perfettamente ragione ma ... tu cosa suggeriresti? ![]() Fai intervenire Cionci santo cielo .. FAI QUALCOSA!!! ![]() Io di più ninzò ![]() |
|
![]() |
![]() |
#8 |
Messaggi: n/a
|
si potrebbe trattare il testo passandolo in sequenza nelle tre eccezzioni possibili: ville - Ville - VILLE ... solo così infatti non ci sono errori grammticali e di sintassi ma nulla vieta che per qualche oscuro motivo eppur legittimo esista un ViLLe (per esempio).
Questa è una possibile soluzione altrimenti invito lucas72 a postare la stessa domanda (sempre che non l'abbia già fatto) sul forum di PHP su html.it. Li sicuramente ci sono più possibilità di trovare una soluzione. ![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:01.