PDA

View Full Version : [php] eregi_replace..ma


lucas72
09-04-2005, 15:43
Ciao

le due righe sotto:


...
$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

anonimizzato
09-04-2005, 19:19
considera che eregi_replace è case insensitive, ereg_replace no.

Probabilmente è per questo che ti vengono sostiuite le stringhe in uppercase.

lucas72
10-04-2005, 11:26
Originariamente inviato da Sgurbat
considera che eregi_replace è case insensitive, ereg_replace no.

Probabilmente è per questo che ti vengono sostiuite le stringhe in uppercase.

va bene, grazie.

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

anonimizzato
10-04-2005, 12:35
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. :p

anonimizzato
10-04-2005, 12:41
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 :)

edivad82
10-04-2005, 13:03
Originariamente inviato da Sgurbat
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 :)


e se ci fosse scritto villE? :D o ViLLe? :D o più semplicemente Ville? ;)

anonimizzato
10-04-2005, 14:33
Originariamente inviato da edivad82
e se ci fosse scritto villE? :D o ViLLe? :D o più semplicemente Ville? ;)

:grrr:

Hai perfettamente ragione ma ... tu cosa suggeriresti? ;)

Fai intervenire Cionci santo cielo .. FAI QUALCOSA!!! :D

Io di più ninzò :p

anonimizzato
10-04-2005, 14:40
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. ;)