phpRS 2.6.5 : phpRS Fórum
Toto fórum je určené výhradně k diskuzi o verzi phpRS v2.6.5.
phpRS - redakční a informační systém
Jak na ZVYRAZNENI vysledku vyhledavani
Zaslán uživatelem/kou: mat. (IP adresa zaznamenána)
Datum: 2005-07-20, 11:19

Ahoj, pro jiny projekt jsem se snazil najit vhodny skript, ktery by zvyraznoval nalezena slova v textu
nasel jsem vynikajici navod na
[http://php.vrana.cz/zvyrazneni-vysledku-vyhledavani.php]
sila reg.vyrazu a jednoduchost je opravdu genialni :)

Nekam do specifikace funkci se uvedou funkce (co ja vim treba do config.sys)

function odzvyraznit($matches)
{
    return preg_replace('~<span class="search-result">([^<]*)</span>~i', '\\1', $matches[0]);
}


function zvyraznit($text)
{
    $search = preg_quote(htmlspecialchars(stripslashes($_GET["search"])), '~');
    if ($search) {
        $text = preg_replace("~$search~i", '<span class="search-result">\\0</span>', $text);
        // odstranění zvýrazňování z obsahu <option> a <textarea> a zevnitř značek a entit
        $span = '<span class="search-result">[^<]*</span>';
        $pattern = "~<(option|textarea)[\\s>]([^<]*$span)+|<([^>]*$span)+|&([^;]*$span)+~i";
        $text = preg_replace_callback($pattern, 'odzvyraznit', $text);
    }
    return $text;
}


a do souboru, ktery generuje nejaky text (treba na uvod specfce?..ta je includovana do vsech souboru, ktere neco generuji), pak uvest na uvod tohoto jen
ob_start('zvyraznit');  // funkce pro vyhledavani


pripadne volat funkci zvyraznit s kazdym textem, ve kterem chceme neco zvyraznit (viz. link)


Pokud tedy je pak nejakemu souboru predan parametr $search (ci jiny, pak ale upravit funkci zvyraznit), je ve vygenerovanem textu hledane slovo (ci cast slova) zvyraznena dle definovaneho spanu (viz ve funkci zvyraznit, styl nutno doplnit si do sveho CSS!!!!) tohle slovo (ci cast) zvyraznena..

Mam ted ale mometlnae zatmeni a wokno:) a resim, jak to dovymyslet tak, aby to zvyraznovalo slova ve vysledcich, tedy slova zadana pres vyhledavaci formular (tedy jako $rstext, $GLOBALS["rstext"]...) nejen, kdyz je primo v adresnim radku definovan onen rozhodujici parametr rstext...
(vyhledavaci formular preda sve parametry search.php, tedy skript search.php jej preda sam sobe a nepredava tak 'rstext' "externe"..jako search.php?rstext=cokoliv)

Jak udelat, aby si skript pamatoval (nekam ulozil) obsah promenne rstext a ten pak mel k dispozici pro zvyrazneni... Pujde to urcite a bude to easy, ale jsem jaxi out
Poradte chlapaci :)

(??? ve funkci 'zvyraznit' zmenit misto 'search' neco na zpusob '$GLOBALS["rstext"]' ??? )

?







Celkem upraveno 3×. Poslední úprava mat. v 12.08.2005 14:58.

Re: Jak na ZVYRAZNENI vysledku vyhledavani
Zaslán uživatelem/kou: pykaso (IP adresa zaznamenána)
Datum: 2005-07-21, 23:00

Myslite neco takoveho na zacatku souboru ?

if(IsSet($_GET["rstext"]) && $_GET["rstext"]!="") {$hledat = $_GET["rstext"];}
else{$hledat = $_POST["rstext"];}


a pak volat (samozrejme je nutne osetrit vstupni promennou $hledat proti nepovolenym znakum apod.)..

ob_start($hledat)

Re: Jak na ZVYRAZNENI vysledku vyhledavani
Zaslán uživatelem/kou: mat. (IP adresa zaznamenána)
Datum: 2005-07-22, 20:24

Dikec za reply.

Nejsem v PHP kovany, pomalu se ucim..tak:

Predpokladam, ze tuto syntaxi je treba uvest na zacatek souboru, ktery generuhje nejaky text, resp. ktery bude generovat text a v nem budou zvyrazneny nalezena slova, ano? (napr. search.php)

Dale..promenna $hledat je ta, ktera je pouzivana ve funkci ZVYRAZNIT? (v teto je v originale pouzivana promenna $search) ?

A nerozumim volani ob_start($hledat)... nemas na mysli ob_start('zvyraznit') ?

(http://php.ftp.cvut.cz/manual/cs/function.ob-start.php)

Re: Jak na ZVYRAZNENI vysledku vyhledavani
Zaslán uživatelem/kou: mat. (IP adresa zaznamenána)
Datum: 2005-08-12, 15:06

Diky Pykaso,
nejsem sice kovany, ale mrkl jsem na to a vysledkem je, ze to slape :-)

onu funkci zvyraznit jsem dle tveho inspirativniho prispevku upravil takto

function zvyraznit($text)
{
if ( IsSet($_GET["rstext"] ) && $_GET["rstext"]!="" )
$rstext = $_GET["rstext"];
else
$rstext = $_POST["rstext"];


$rstext = preg_quote(htmlspecialchars(stripslashes($rstext)), '~');

if ($rstext) {
$pattern = "~";
$pattern .= $rstext;
$pattern .= "~i";

$text = preg_replace($pattern, '<span class="search-result">\\0</span>', $text);
// odstran&#236;ní zvýraz&#242;ování z obsahu <option> a <textarea> a zevnit&#248; zna&#232;ek a entit
$span = '<span class="search-result">[^<]*</span>';
$pattern = "~<(option|textarea)[\\s>]([^<]*$span)+|<([^>]*$span)+|&([^;]*$span)+~i";
$text = preg_replace_callback($pattern, 'odzvyraznit', $text);
}


return $text;
}


a kouzelnou formulku

ob_start('zvyraznit');

jsem narval do search.php


!!!!!!!!!!!!!!!!!!!!!!!!!!!

Jinac zvyrazneni vyhledavanych slov pri prichodu z vyhledavace velmi efektne i efektivne resi [http://marker.infoset.com/] !!! DOporucuji.

Minus - funguje jen v masovem prohlizeci (rozumej MSIE)




Martin

----

Dont worry be happy! :-)

:: [http://cyklo.net]



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.