![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Mam problem z moim skryptem, otoz mam wyszukiwarke i po znalezieniu tekstu o zmiennej $tekst w bazie danych chce, by mi w wynikach wyszukiwania te wyrazy wyroznilo jakims kolorem.
Mam taki kod (skrocony): [php:1:1a51736cab]$sql=mysql_query("SELECT LEFT(tekst,250) AS skrot FROM newsy WHERE skrot LIKE '%$tekst%'"); while($row=mysql_fetch_array($sql)) { $row[skrot] = htmlspecialchars($row[skrot]); $row[skrot] = stripslashes($row[skrot]); $row[skrot] = nl2br($row[skrot]); $row[skrot] = eregi_replace("www.([^[]*)","<a href="http://www.1" target="_blank">1</a>",$row[skrot]); $row_wyniki[skrot] = eregi_replace("([^[]*)","<a href="1" target="_blank">1</a>",$row[skrot]); $row_wyniki[skrot] = eregi_replace("+)]([^[]*)","<a href="http://1" target="_blank">2</a>",$row[skrot]); $row_wyniki[skrot] = eregi_replace("+)]([^[]*)","<a href="1" target="_blank">2</a>",$row[skrot]); // w tym kodzie wyzej $row[skrot] przechodzi przez rozne f-cje, tak, ze tagi bbcode sa zamieniane na urle $row[tytul]=eregi_replace("$row[skrot]","<span style="background-color: yellow">$row[skrot]</span>",$row[tytul]); $row[skrot]=eregi_replace("$row[skrot]","<span style="background-color: yellow">$row[skrot]</span>",$row[skrot]); echo $row[skrot]; }[/php:1:1a51736cab] teraz problem lezy w tym, ze jak mam w tekscie link, czyli np. www.mojastrona.pl a wyszukuje wyrazu "strona", to ten link mi sie psuje, bo przed i po wyrazie strona jest dodawane <span...>, i link ma postac:[php:1:1a51736cab]www.moja<span style="background-color: yellow">strona</span>.pl[/php:1:1a51736cab] wiec jest zly prosilbym o wszelkie wskazowki, z gory thx -------------------- |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 560 Pomógł: 0 Dołączył: 15.07.2003 Skąd: Kwidzyn Ostrzeżenie: (0%) ![]() ![]() |
mam zrobione cos podobnego na stronce http://www.pulskwidzyna.boo.pl/index.php?id=linki
rozwiazalem to tak: wczytuje do zmiennych $adres i $opis dane z tabeli $key - to szukany ciag znakow... $wyswietlane=$adres; $wyswietlane=str_replace($key, "<font color=red>$wyswietlane</font>", $wyswietlane); jak wyswietlam wniki na stronie to: .... <a href=$adres>$wyswietlane</a> - $opis moze w czyms ci to pomoze |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Ok. rozumie twoja idee, ale podejrzewam, ze ty masz $adres i $ opis juz przygotowane w dwoch zmiennych.
Wiec jak to zrobic w moim przypadku, ze gdy mam np. w zmiennej$tekst: Kod zobacz moja strone [url=http://www.mojastrona.pl]Oto moja strona[/url] dalszy tekst
moja druga strona [url]www.mojastrona2.pl[/url] dalszy tekst aby mi wybralo z tego tekstu do zmiennej $adres="http://www.mojastrona.pl"; i $opis="Oto moja strona"; podobnie z drugim linkiem. Moglby mi ktos pomoc, bo na wyrazeniach regularnych sie nie znam, thx //EDIT w Twoim skrypcie znalazlem blad ![]() wpisz w wyszukiwarce wyrazenie: [abcdefghijklmnopqrstuvwyz] lub cokolwiek miedzy '[' a ']' i zobacz wyniki (ale mysle, ze nikt nie bedzie tego wpisywal, chyba ze na zlosc ![]() -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 158 Pomógł: 0 Dołączył: 29.06.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
podobna wyszukiwarka dziala na phpbb2, tutaj wszystko jest ok.
Kod z phpbb2: [php:1:eee6945bcc]<?php // // Was a highlight request part of the URI? // $highlight_match = $highlight = ''; if (isset($HTTP_GET_VARS['highlight'])) { // Split words and phrases $words = explode(' ', trim(htmlspecialchars(urldecode($HTTP_GET_VARS['highlight'])))); for($i = 0; $i < sizeof($words); $i++) { if (trim($words[$i]) != '') { $highlight_match .= (($highlight_match != '') ? '|' : '') . str_replace('*', 'w*', phpbb_preg_quote($words[$i], '#')); } } unset($words); $highlight = urlencode($HTTP_GET_VARS['highlight']); } [/php:1:eee6945bcc] oraz [php:1:eee6945bcc] // // Highlight active words (primarily for search) // if ($highlight_match) { // This was shamelessly 'borrowed' from volker at multiartstudio dot de // via php.net's annotated manual $message = str_replace('"', '"', substr(preg_replace('#(>(((?>([^><]+|(?R)))*)<))#se', "preg_replace('#b(" . $highlight_match . ")b#i', '<span style="color:#" . $theme['fontcolor3'] . ""><b>1</b></span>', '0')", '>' . $message . '<'), 1, -1)); } ?>[/php:1:eee6945bcc] jednak sa tu wyrazenia reguralne, a tych wogole nie umie. Moze ktos mi pomoc rozwiazac ten problem? lub ma cos takiego gotowe? z gory dziekuje -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Moja propozycja: podziel sobie tekst na wyrazy. Potem sprawdź czy dany wyraz nie zawiera ciągu http:// i/lub www. (ważna kropka na końcu). I jeżeli nie zawiera to wyróżnij tekst.
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.06.2025 - 15:16 |