Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zaznaczenie wyszukiwanej frazy, "Pokolorowanie" wyników wyszukiwania
wojciech.zeler
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.03.2008

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


Załóżmy, że na stronce (w jej kodzie) mam następującą frazę:
<a href="link.htm">link</a>

Teraz mam zamiar przerobić to tak:
<a href="link.htm"><span style="color:red">link</span></a>

I teraz 2 pytanka:
1. Jak zrobić, żeby w tagi brane było tylko to co nie znajduje się w innym tagu, np.
<a href="<span style="color:red">link</span>.htm"><span style="color:red">link</span></a>
(tego pogrubionego nie powinno tam być, bo psuje mi linka)

2. Żeby przy kolorowaniu frazy "link" kolorowane były wszelkie mutacje, np. "LINK", "LiNk", "Link" itd.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wojciech.zeler
post
Post #2





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 30.03.2008

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


Znalazłem coś takiego:
http://www.webdeveloper.com/forum/showthread.php?t=54223

Cytat(zebdaag)
<?php

/****************************************
Highlighting Function
****************************************/
function highlight_words( $text, $keywords )
{
foreach(
$keywords as $word )
{
$text = preg_replace( "/$word/i", '<span style="color:red;font-weight:bold;">' . $word . '</span>', $text );
}
return(
$text );
}
/****************************************
Text String
****************************************/
$text = 'The big red fox jumped over the fence.<br>
Kijk maar hier heb je een enter'
;
/****************************************
Array Of Keywords
****************************************/
$keywords[] = $keyW; //tutaj trzeba wklepać do tablicy $keywords podmienianie słówka

/****************************************
Do It
****************************************/
echo( highlight_words( $text, $keywords ) );
echo
"<a href='highlight.php?keyW=enter'>enter</a></p>";
echo
"<a href='highlight.php?keyW=kijk'>kijk</a></p>";
?>

Problem rozwiązany.



Edit:

Po małym tuningu i braku umiejętności zastąpienia wszystkiego jedną funkcją preg_replace napisałem coś takiego:
  1. <?php
  2. function highlight_words($text, $keywords)
  3. {
  4. $wynik = '';
  5. $ciag = '';
  6. $tag = false;
  7. for($t=0; $t
  8. {
  9. if($text[$t]=='<' && $text[$t+1]!=' ')
  10. {
  11. foreach($keywords as $word)
  12. {  
  13.  $nowe_slowo = '#';
  14.  $stronka = '';
  15.  for($i=0; $i
  16.  {
  17.  $nowe_slowo .= '('.strtolower($word[$i]).'|'.strtoupper($word[$i]).')'; 
  18. $stronka .= ''.($i+1);
  19.  }
  20.  $nowe_slowo .='#';
  21. $ciag = preg_replace($nowe_slowo, ''.$stronka.'',$ciag);
  22. }
  23.  
  24. $tag = true;
  25. $wynik .= $ciag;
  26. $wynik .='<';
  27. $ciag = '';
  28.  
  29. }elseif($text[$t]=='>')
  30. {
  31. $tag = false;
  32. $wynik .='>';
  33. }elseif($tag == false)
  34. {
  35. $ciag .= $text[$t];
  36. }elseif($tag == true)
  37. {
  38. $wynik .= $text[$t];
  39. }
  40. }
  41.  
  42. return $wynik;
  43. }
  44. ?>


function highlight_words($text, $keywords) <-- $text to duży, podmieniany string, a $keywords to tablica z szukanymi.
Nie ma znaczenie wielkość liter, a tagi html są opuszczane

Ten post edytował Sabistik 27.04.2008, 09:54:09
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 02:19