Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zaznaczenie wyszukiwanej frazy
Forum PHP.pl > Forum > PHP
wojciech.zeler
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.
webdice
http://forumphp.nq.pl/index.php?showtopic=92430&hl=

Przerób sobie trochę i będziesz miał.
wojciech.zeler
Działa. Dzięki. Tylko teraz sprawa druga - wielkość liter. Link != link sadsmiley02.gif
Sabistik
Dodać odpowiedni modyfikator?
wojciech.zeler
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
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-2025 Invision Power Services, Inc.