Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zamiana danego słowa z tekstu na link, cos jak na wikipedii
Bamber
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.02.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
blooregard
post
Post #2


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




  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.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
Bamber
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.02.2008

Ostrzeżenie: (0%)
-----


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??
Go to the top of the page
+Quote Post
exood
post
Post #4





Grupa: Zarejestrowani
Postów: 86
Pomógł: 16
Dołączył: 2.12.2009
Skąd: Płock/Warszawa

Ostrzeżenie: (0%)
-----


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

Ten post edytował exood 13.05.2010, 15:25:06
Go to the top of the page
+Quote Post
Bamber
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.02.2008

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Wicepsik
post
Post #6





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  1. $s = mysql_query('twoje zapytanie');
  2.  
  3. while ($r = mysql_fetch_array($s)){
  4. echo '<a href="'.$r['link'].'">'.$r['slowo']'</a>';
  5. }


--------------------
Go to the top of the page
+Quote Post
croc
post
Post #7





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Tho
post
Post #8





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 26.07.2011

Ostrzeżenie: (20%)
X----


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"?

Ten post edytował Tho 3.09.2011, 11:11:04
Go to the top of the page
+Quote Post
Etil
post
Post #9





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 28.08.2011

Ostrzeżenie: (0%)
-----


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?


--------------------
....
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 08:20