Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pitanje u vezi izrade skripte za pretragu

[es] :: PHP :: Pitanje u vezi izrade skripte za pretragu

[ Pregleda: 1346 | Odgovora: 5 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL Developer, Erst..
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


Profil

icon Pitanje u vezi izrade skripte za pretragu07.08.2003. u 19:01

Trenutno pisem neku skriptu za pretragu baze sa podacima. Uradio sam to na dva nacina - prvo da se pretraga vrsi sa fulltext searchom, a ako ne nadje nista, onda da se pretraga vrsi sa klasicnim nacinom LIKE .
Kao rezultat ispisujem samo naslov odredjenog artikla, koji je ujedno i link za detaljnije informacije o tom artiklu.
Medjutim, zelio bih da kao rezultat pretrage osim naslova prikazem i dio opisa tog artikla, sa highlightovanim search pojmom. To mogu da uradim sa slijedecim jednostavnim nacinom:
Code:

$zamjena = '<span style="background-color: #FF9966">$1</span>';
$artikl_opis = preg_replace("/(\b".$trazi."\b)/imsu",$zamjena,$artikl_opis);


E sad, zelio bih recimo da ispisem 50 znakova iz opisa, pa onda highlightovani search pojam, pa onda opet 50 znakova iza toga.

Pokusao sam neke preg_replace patterne, ali nisam imao uspjeha. Citanje PHP manuala mi nije dalo puno pomoci ili zbog vrucine nisam u stanju da se dovoljno koncentrisem.
Da li neko ima rjesenje ?
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
07.08.2003. u 19:01 

leka
Dejan Lekić
senior software engineer, 3Developers Ltd.
London, UK

Član broj: 234
Poruke: 2530
*.racasse.se

Sajt: dejan.lekic.org


Profil

icon Re: Pitanje u vezi izrade skripte za pretragu07.08.2003. u 20:51
Imenjace, cim sam video ovaj tekst odmah se setih jednog davnog tutorijala na Zend-u: http://www.zend.com/zend/tut/tutorial-ferrara1.php ... Ako ne pomogne, onda cemo videti dalje...
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
07.08.2003. u 20:51 

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL Developer, Erst..
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


Profil

icon Re: Pitanje u vezi izrade skripte za pretragu08.08.2003. u 01:33
Imenjace, hvala na linku. Vrlo je poucan, ali nazalost nema ono sta meni treba.

Fulltext search sam savladao i sve radi kako treba kad ne moram da prikazujem 50 znakova (ili koliko vec ima) prije trazenog pojma, zatim trazeni pojam, pa na kraju slijedecih 50 znakova (ili koliko ih je vec ostalo) u zadanom stringu. Ako mi preg_replace vraca back reference u obliku:

tekst prije trazenog pojma = $1 ili \\1
trazeni pojam = $2 ili \\2
tekst nakon trazenog pojma = $3 ili \\3

ja zelim da ih obradim na nacin:
substr($1,0,50)."<span class=\"background-color: #FFFF00; color: #000000\">".$2."</span>".substr($3,0,50)

Pokusavao sam neke nacine sa substring, ali ne ide. Dakle, treba mi samo odgovarajuci regexp za to.
Ako neko zna, bio bih mu vrlo zahvalan.

Nastavljam dalje da trazim rjesenje...

PS: Nasao sam neke korisne linkove za highlight trazenih pojama, pa ako mogu nekome biti od koristi, evo ih:
http://blogs.linux.ie/xeer/archives/p/89490286/c/1
http://www.textism.com/tools/google_hilite/
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
08.08.2003. u 01:33 

Jbyn4e
Admin/Developer, Yunix
Zrenjanin - Beograd

Član broj: 422
Poruke: 3864
195.250.117.*

ICQ: 10450578
Sajt: bio sf.co.yu


Profil

icon Re: Pitanje u vezi izrade skripte za pretragu08.08.2003. u 10:41
Jedino sto mi trenutno pada na pamet je da (pretpostavljam da ti nadjes ceo opis i stavis ga u promenljivu - znaci select opis from tabela where uslov ide u recimo promenljivu $a) podelis promenljivu $a na jedan veliki niz:
$b= explode ($a, " ");
zatim da nadjes velicinu niza (strlenght valjda to bese radi), da pronadjes u kom elementu niza (recimo stavis ga u promenljivu $gde) se nalazi trazena rec (ako je rec u pitanju, ako je izraz to vec komplikuje situaciju), i da uradis jednu for petlju od $gde-50 do $gde+50 i ispises te reci (i dodas space-ove izmedju)

Ovo je mozda "malo" ruzno resenje, ali samo to mi sad pada na pamet.
08.08.2003. u 10:41 

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.verat.net

Sajt: localhost


Profil

icon Re: Pitanje u vezi izrade skripte za pretragu08.08.2003. u 13:12
probaj ovo:

Code:

$text="bla bla i truc i opet ja vama zelim da vi lepo porastete i da se posle 
lepo igrate i sta ti ja znam vise, ali ja znam da vi opet volite svoju zemlju".
$rec="vi";

preg_match_all("~(.{0,5}) ($rec) (.{0,5})~is", $text, $a);
foreach ($a[0] as $r) {
    echo preg_replace("~$rec~iUs", "<b>$0</b>", $r)."<p>";
}


(ovo prikazuje po 5 karaktera sa strane.. nadam se da znaš da prepraviš na 50 ;)

08.08.2003. u 13:12 

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL Developer, Erst..
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


Profil

icon Re: Pitanje u vezi izrade skripte za pretragu08.08.2003. u 22:18
-zombie- da, preg_match_all sam zaboravio upotrijebiti. Hvala na savjetu.

Uspio sam nekako srediti da mi to radi sa plain textom i radice u vecini slucajeva.
Medjutim, kad za taj opis koristim i HTML tagove za podebljavanje teksta ili neki drugi tag, desi se da mi tih 50 znakova zahvati i te tagove, pa se onda prikaz rezultata pretrage malo poremeti.
Sad cu pokusati da sredim nekako da u pretrazi ignorira HTML tagove i njihove atribute. Vjerovatno ce strip_tags tu uletiti u igru.

Rjesenje cu naravno objaviti ovdje :) (Ako ga nadjem :( :) )
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
08.08.2003. u 22:18 

[es] :: PHP :: Pitanje u vezi izrade skripte za pretragu

[ Pregleda: 1346 | Odgovora: 5 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.