Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zamiana danego słowa z tekstu na link
Forum PHP.pl > Forum > Gotowe rozwiązania
Bamber
Witajcie,
Mam do zrobienia taką funkcję w PHP, która zamianiałaby wybrane słowa z tekstu na linki.
Nie wiem jak sie za to zabrac.. poczatkujacy jestem w PHP..
Moze w bazie przyporzadkowac do danego slowa odpowiedni link i jesli na stronie pojawi sie takowe slowo, wtedy zostanie zamienione na link, np. dom skojarzy nam z linkiem do www.fajnepokoje.ru smile.gif
Bardzo prosze o pomoc i podpowiedzi

PS.Chyba na wikipedii jest podobnego cos, bo jak w tekscie wystapi np. fraza AudiTT to jest juz to podswietlone na niebiesko jako link do strony opisujacej AudiTT na wikipedii. Cos takiego potrzebuje zrobic.
blooregard
  1. $text = 'Audi TT to fajne auto.';
  2. $text = str_replace('Audi TT' , '<a href="http://xxxxx.pl">Audi TT</a>', $text);


Oczywiście musisz sobie to odpowiednio przerobić, by zamieniał wszystkie słowa, które potrzebujesz.
Bamber
Ooo dokładnie o coś takiego mi chodziło!! Dzięki wielkie!!
A że z php jestem słaby to zapytam, jak resztę obrobić? tj, jak to rozwiązać jesli chodzi o sprawdzanie słowa w bazie danych i w ogole szukanie tego słowa przy ładowaniu strony np??
exood
np. tak:
jak masz pod zmienną $output treść ładowana z bazy to tworzysz sobie tablice z wartościami, które chcesz zamienić:
  1. $replace_arr = array(
  2. 'słowo1' => '<a href="link">slowo1</a>',
  3. 'słowo2' => '<a href="link">slowo2</a>',
  4. 'słowo3' => '<a href="link">slowo3</a>',
  5. 'słowo4' => '<a href="link">slowo4</a>',
  6. );

potem dajesz żeby zamieniło:
  1. $output = str_replace(array_keys($replace_arr), array_values($replace_arr), $output);

i teraz maż już pod zmienną $output pozamieniane wszystkie słowa które zedefiniowałes sobie w tablicy $replace_arr
Bamber
Aha.. no fajnie, dzięki.
A podpowiedzcie mi jeszcze jak to z baza załatwic?
W bazie zrobic jedna tabelke? (id,słowo,link) questionmark.gif i jak podlaczyc sie pod to co podpowiadacie?
Wicepsik
  1. $s = mysql_query('twoje zapytanie');
  2.  
  3. while ($r = mysql_fetch_array($s)){
  4. echo '<a href="'.$r['link'].'">'.$r['slowo']'</a>';
  5. }
croc
Kolega powyżej napisał skrypt wypisujący linki. Żeby użyć bazy danych do zamiany słów w tekście (dobry pomysł), możesz zrobić coś takiego:

  1. $query = mysql_query('SELECT word, url FROM links');
  2. while($row = mysql_fetch_assoc($query)) {
  3. $text = str_replace($row['word'], '<a href="' . $row['url'] . '">' . $row['word'] . '</a>', $text);
  4. }


zakładając, że zmienna $text zawiera treść, w której te słowa mają być zamieniane na linki.
Tho
Czy mógłby mi ktoś pomóc?

Co trzeba dodać, by zaczęło to "działać"? echo $output; ? Nie mogę zrozumieć, dlaczego na końcu jest ", $output" jeśli ta zmienna została nazwana "output", po co na końcu pobierać coś z niej samej?

  1. $replace_arr = array(
  2. 'słowo1' => '<a href="link">slowo1</a>',
  3. 'słowo2' => '<a href="link">slowo2</a>',
  4. 'słowo3' => '<a href="link">slowo3</a>',
  5. 'słowo4' => '<a href="link">slowo4</a>',
  6. );
  7. $output = str_replace(array_keys($replace_arr), array_values($replace_arr), $output);


Nie chcę narazie tego robić przy pomocy bazy, bo nie ma tego aż tak wiele, ale chce się dowiedzieć jeśli nie "co zrobić" by to wywołać, to przynajmniej co muszę wiedzieć by samemu potrafić to wykończyć.

$replace_arr - wywołuje statyczną tablicę, ok - ale co dalej?

Jak wywołać np diva "tekst" w którym to zamieni wszystkie slowo1 na slowo1.pl?(i nie zrobi tego w innych divach)

Szczerze mówiąc nie rozumiem całkiem co mam zrobić ze zmienną $output...

Czy to naprawde takie trudne, czy ja poprostu jestem jakiś głupi?

Undefined variable: output in ... ?

Przecież dodałem

  1. $output = str_replace(array_keys($replace_arr), array_values($replace_arr), $output);


To nie jest "zdefiniowanie"?
Etil
A nie można tego załatwić poprostu zmienną? Czy czegoś nie rozumiem, po co tablica?

Jeśli ktoś ma ciekawe rozwiązanie tego, będę ogromnie wdzięczny. Jak np skalować stronę, czy taki tekst już istnieje?

Trzeba zrobić update bazy i ręcznie to zmienić. TO oczywiście mogę zrobić, ale - druga sprawa - trzeba dołączyć jakiś kod do formularza, by przed wysyłką przeskanował tę tablicę i sprawdził czy aby nie ma słowa które ma zostać zastąpione linkiem?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.