Sytuacja wygląda tak mam taką tablę z synonimami w bazie:
CREATE TABLE `synonimy` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`wyrazy` varchar(250) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3359 ;
--
-- Zrzut danych tabeli `synonimy`
--
INSERT INTO `synonimy` (`id`, `wyrazy`) VALUES (1, 'praktycznie=w praktyce\n'),
(2, 'istnienia=egzystencji=obecności\n'),
(3, 'konkurencja=rywalizacja\n'),
(4, 'filarów=podstaw=fundamentów\n')
I taką funkcję mającą zamieniać synonimy, której dostarczam parametr:
$text = 'praktycznie istnienia fundamentów konkurencja gwarantuje zasadniczy. Niebyt w tym gdzieś wale korbowym ulokuj jedyna w swoim rodzaju gratki..';
function losuj_synonim($text) {
/*********ŁĄCZENIE I POBRANIE SYNONIMÓW Z BAZY***********/
connect_to_db();
$sql = "SELECT wyrazy FROM synonimy";
/*********ŁĄCZENIE I POBRANIE SYNONIMÓW Z BAZY***********/
$pojedynczy = explode('=', $row['wyrazy']); //rozbijamy tabelę z synonimami $indeks = mt_rand(0
, count($pojedynczy)-1
); //losujemy indeks dla synonimu $a = true; //zmienna kontrolna
foreach ($pojedynczy as $key => $value) {
if (strpos($text, $value) && $a) { //jeśli znajdziemy którykolwiek z synonimów w tekście......
echo 'To będzie zastąpione: <font color="red"> ' .$value. '</font> tym: <font color="red">' . $pojedynczy[$indeks] . '</font> w tekście o treści: ' . $text . '<br><br>';
$text = str_replace($value, $pojedynczy[$indeks], $text); //nadpisujemy tekst z podmienionym synonimem
if($value == $pojedynczy[$indeks]) continue;
else $a=false; //w innym przypadku ustawiamy zmienna kontrolna a na false żeby przerwać pętle oznaczyć udana zamianę i nie zamieniać cały czas tego samego wyrazu na rożne synonimy
}
else break; //jesli a==FALSE lub nie znaleźliśmy synonimu w tekście to wychodzimy z pętli foreach i w pętli while szukamy kolejnego wyrazu
}
}
return $text; //zwracamy podmieniony tekst i przekazujemy zmienna do innej funkcji np. dodającej podmienione artykuły do blogów
}
Funkcja podmienia tylko:
istnienia -> egzystencji
konkurencja ->rywalizacja
istnienia->istnienia
konkurencja->konkurencja
Co zrobić aby to działało na zasadzie, że dla któregokolwiek z tych przykładowych wyrazów w bazie, który zostanie odnaleziony w zmiennej $text czyli:
filarów=podstaw=fundamentów
zostania dokonana podmiana na synonim
filarów=podstaw=fundamentów
tak jednak żeby nie została dokonana zamiana tego samego wyrazu na to samo ?