Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wstawianie linków wewnątrz tekstu
adam882
post 22.06.2012, 07:55:08
Post #1





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

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


Wita

Na niektórych strona internetowych zauważyłem, że wewnątrz dłuższych opisów, niektóre słowa zawierają linki np. do tagów. Sądzę, że są one tworzone automatycznie. Czy działa on na takiej zasadzie, że tekst rozbijany jest na każde słowo, a następnie jest ono sprawdzane, czy występuje w tablicy słów kluczowych? Jakie funkcje należałoby użyć do napisania takiego modułu? Na oko wydaje mi się, że taki moduł może być zasobożerny.
Go to the top of the page
+Quote Post
Shido
post 22.06.2012, 13:52:47
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


Coś w podobie mam zamiar robic w niedalekiej przyszlości.

Opcje jakie widzę:
1/ Tak jak piszesz rozbicie takiego tekstu na pojedyncze słowa i porównywanie, ale to jak sam zaówarzyłeś jest zasobożerne.

2/ Wykorzystanie fajnej funkcji strpos() która wyszukuje w stringach dany ciag znaków i zwraca na której pozycji zaczyna się dany ciąg np:
  1. $a = "ala ma kota, kot ma jagody";
  2. echo strpos($a, 'jagody');

Wyświetli 20 ponieważ "j" ( pierwsza litera jagody ) znajduje się na 20 pozycji w tablicy $a ( string to tablica znaków )
i jeszcze dalej się bawiąc z liczeniem długości szukanego slowa mozna kombinować dodawanie linka napisane na biegu:
  1. <?
  2. $szuk = 'jagody';
  3. $a = "ala ma kota, kot ma jagody";
  4. echo(''.$a.'<br /><hr />');
  5. $b = strpos($a, $szuk);
  6. if($b)
  7. {
  8. $a1 = substr($a, 0, $b);
  9. $a2 = substr($a, $b+strlen($szuk), strlen($b));
  10. $a = $a1.'<a href="#">'.$szuk.'</a>'.$a2;
  11. }
  12. echo(''.$a.'<br /><hr />');
  13. ?>


3/Można wykorzystać też str_replace(), funkcja ta znajduje dany ciąg w stringu i zamienia na inny:
  1. <?
  2. $szuk = 'jagody';
  3. $a = "ala ma kota, kot ma jagody";
  4. echo(''.$a.'<br /><hr />');
  5. $a = str_replace($szuk, '<a href="#">'.$szuk.'</a>', $a);
  6. echo(''.$a.'<br /><hr />');
  7. ?>


Jeszcze można sie bawić się z wywołaniem tego przy tworzeniu takiego stringa ( w tym samym skrypcie ) czy np. wysłaniem go równolegle by ajax sie nim zają. Zresztą sposoby wywołania sa dowolne.


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
Go to the top of the page
+Quote Post
adam882
post 22.06.2012, 20:30:28
Post #3





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

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


Cóż, akurat o czymś takim już myślałem, ale mimo wszystko dzięki za odpowiedź. Jestem ciekaw, czy istnieje nieco bardziej optymalny sposób.

Ten post edytował adam882 22.06.2012, 20:36:16
Go to the top of the page
+Quote Post
Shido
post 22.06.2012, 20:57:33
Post #4





Grupa: Zarejestrowani
Postów: 121
Pomógł: 22
Dołączył: 22.06.2012

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


Wydaje mi się że optymalnie (dla servera) byłoby gdyby zrobić to w js, skoro java wykonuje się po stronie przeglądarki, to nie obciążalibyśmy tym servera. Jednak takie rozwiązanie jest dobre do tekstów które się często zmieniają. Ja w swoim skrypcie na pewno będę korzystał z str_replace() do tworzenia linków, a strpos() przy usuwaniu ich.
Wydaje mi się że jednak lepiej to puszczać od siebie, a by nie zajmowało to czasu planuje zrobić to przy pomocy ajaxa, czyli tu sobie dodam do bazy jakiś tekst do którego będą linki i razem z zapisem wyśle ajaxa by przeszukiwał resztę bazy i linkował.


--------------------
Sorka za błędy ort. jak coś dajcie znać na PW to popoprawiam.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:03