Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem - zaznaczanie tekstu w wynikach szukania
wojto
post 18.08.2003, 08:23:18
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


--------------------
Go to the top of the page
+Quote Post
Kinool
post 18.08.2003, 09:10:30
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
Go to the top of the page
+Quote Post
wojto
post 18.08.2003, 09:49:38
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 aaevil.gif
wpisz w wyszukiwarce wyrazenie: [abcdefghijklmnopqrstuvwyz] lub cokolwiek miedzy '[' a ']' i zobacz wyniki (ale mysle, ze nikt nie bedzie tego wpisywal, chyba ze na zlosc aaevil.gif )


--------------------
Go to the top of the page
+Quote Post
wojto
post 23.08.2003, 14:42:00
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


--------------------
Go to the top of the page
+Quote Post
spenalzo
post 26.08.2003, 21:41:06
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.


--------------------

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: 25.06.2025 - 15:16