Jak napisać wyszukiwarkę, która będze przeszukiwać pliki HTML po czym gdy znajdzie szukane słowo będzie zamieniać je na <font color=red>slowo</font>
[php:1:7bc075f9f4]<? $wynik = eregi_replace( $szukane_slowa, "<font color="red">$szukane_slowa</font>", $przeszukiwany_string); ?>[/php:1:7bc075f9f4]
Ta linijka zamienia znalezione słowa także wtedy kiedy są one elementami kodu HTML np jeśli szukane słowo to "HREF" to wtedy wszystko się wywala, czy ktoś ma jakiś pomysł
Lucky
4.03.2004, 15:13:23
Wydaje mi się że dobrym wyjściem jest zrobienie listy takich znaczników, a następnie sprawdzanie czy wyszukiwane słowo to nie jedno z nich.
Inny sposób (ale nie wiem na ile może być wydajny) to pobierasz numer porządkowy znalezionego ciągu (numer pierwszego znaku) np. za pomocą strpos(), a nastepnie sprawdzasz, czy najbliższy znak za nim to '<', jeżeli nie to tego nie zamieniasz, a jeżeli tak to nadpisujesz. Sprawdzać możesz, np poprzez wycięcie wszystkiego co znajduje się od znalezionego numeru aż do końca pliku, np. za pomocą funkcji strstr(). Pierwsze wsytąpienie znaku znajdziesz przy pomocy strchr().
Witam
Użyj tej funkcji, ewentualnie rozbuduj ją sobie.
Funkcja w tej postaci czyści z tekstu kod html i zawartość np. javascript.
[php:1:1799ca32ab]<?php
function clean($string){
$search=array("'<script[^>]*?>.*?</script>'si","'<[/!]*?[^<>]*?>'si");
$replace=array("","");
$string=preg_replace($search,$replace,$string);
return $string;
}
?>[/php:1:1799ca32ab]
Chodzi mi o to zeby wczytac plik html do zmiennej co juz zrobilem, a potem wszystko czego szukam i co nie jest tagiem zamienic na np czerwone i wyrzucac zmienna jako html z pokolorowanymi wynikami wyszukiwania
Lucky
4.03.2004, 21:13:04
Jeżeli o to chodzi, to sposób który podałem jest dobry.
Możesz ewentualnie zrobić w ten sposób:
Wczytujesz do jednej tablicy kolejne numery wystąpień znaku '<' a do drógiej odpowiednio kolejne numery wystąpień znaku '>'. Następnie odnajdujesz potrzebne słowa (tzn spisujesz numery ich wystąpień w ciągu) i sprawdzasz czy dany numer nie zawiera się pomiędzy każdym numerem z tablicy pierwszej i odpowiadającemu mu numerowi z drugiej. Mam nadzieję że nie zagmatwałem. :?
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.