Mi chiedevo se fosse possibile (in php) sottrarre 2 testi.
esempio:
$testo = "Ciao a tutti";
$meno = "a";
$testo_finale = $testo - $meno;
e dovrebbe venire fuori "ciao tutti".
Son sicuro che non si faccia così, ma forse voi sapete farlo
Mi chiedevo se fosse possibile (in php) sottrarre 2 testi.
esempio:
$testo = "Ciao a tutti";
$meno = "a";
$testo_finale = $testo - $meno;
e dovrebbe venire fuori "ciao tutti".
Son sicuro che non si faccia così, ma forse voi sapete farlo
Non esiste il concetto di sottrazione tra testi, né in PHP né in nessun altro contesto.Mi chiedevo se fosse possibile (in php) sottrarre 2 testi.
Ciò che stai chiedendo sembra essere la rimozione di una parola da una stringa, il classico esempio di rimozione di stopword, che puoi ottenere (ad esempio) scomponendo la stringa inizare in un vettore di parole, rimuovendo da quest'ultimo ogni occorrenza della parola da eliminare e ricomponendo il vettore in una stringa:
Si può generalizzare per gestire più di una parola da rimuovere. Per la punteggiatura è un po' più complicato.Codice PHP:
$testo = "Ciao a tutti";
$stopword = "a";
$is_not_stopword = function ($string) use($stopword) {
return $string !== $stopword;
};
$risultato = implode(" ", array_filter(explode(" ", $testo), $is_not_stopword));
echo $risultato; // "Ciao tutti"
Puoi anche passare un'array:Codice PHP:
$testo = "Ciao a tutti";
$meno = "a";
$testo_finale = str_replace(' '.$meno.' ',' ',$testo);
echo $testo_finale;
Da problemi però per le parole al termine o inizio della stringa (a meno di settare correttamente $meno).Codice PHP:
$testo = "Ciao a tutti .";
$meno = array(' a ',' tutti ');
$testo_finale = str_replace($meno,' ',$testo);
echo $testo_finale;
La cosa più semplice sarebbe altrimenti con le espressioni regolari (vedi preg_replace), ma forse un po' meno ottimizzato a livello di calcoli.
Ciao!
Ultima modifica di alemoppo : 29-11-2017 alle ore 01.11.44
regolamento altervista_______________ regolamento forum