praegune kellaaeg 20.06.2025 00:42:35
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
Stemugram
HV kasutaja
liitunud: 02.12.2001
|
28.07.2012 02:17:44
Abi vaja PHPs. |
|
|
Mul on siin kood, mis teeb otsingusõna boldiks.
Sellest tuleb Fulltext otsing.
Et täpset fraasi otsida tuleks otsingusse kirjutada sõnade vahele alakriips "_".
Andmebaasis on sõnad ilma alakriipsuta.
All järgnevat koodi oleks vaja muuta nii, et kui otsin näiteks fraasi "poeg_Jaan" siis tehakse leitud vastuses boldiks täpne fraas "poeg Jaan".
<?php
function highlight($c,$q){
$q=explode(' ',str_replace(array('+','','\\','+','*','?','[','^',']','$','(',')','{','}','=','!','<','>','|',':','#','-',''),'',$q));
for($i=0;$i<sizeOf($q);$i++)
$c=preg_replace("/($q[$i])(?![^<]*>)/i","<b>\${1}</b>",$c);
$isikud = explode(";", $c);
$a=1;
for($i=0; $i<count($isikud); ++$i){
echo $a++ .". $isikud[$i]<br>\n";
}
}
$c="Silla Jaan, naine Leena; poeg Jaan, naine Mari; poeg Tõnu; tüdruk Leno";
$q="poeg_Jaan";
highlight($c, $q);
?> |
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
Lordlesta
Kreisi kasutaja
liitunud: 05.07.2005
|
28.07.2012 06:35:54
|
|
|
php:
|
function highlight($c, $q) { $q = explode(' ', str_replace(array('+', '', '\\', '+', '*', '?', '[', '^', ']', '$', '(', ')', '{', '}', '=', '!', '<', '>', '|', ':', '#', '-', ''), '', $q)); for($i=0;$i<sizeOf($q);$i++) { $c = preg_replace("/($q[$i])(?![^<]*>)/i", "<b>\${1}</b>", $c); $a=1; for($i2=0; $i2<count($isikud); ++$i2) { $result = preg_replace("/". $q2. "/i", "<strong>". $q2. "</strong>", $isikud[$i2]); echo $a++ . ". ". $result. "<br>\n"; } } } $c = "Silla Jaan, naine Leena; poeg Jaan, naine Mari; poeg Tõnu; tüdruk Leno"; $q = "poeg_Jaan"; highlight($c, $q);
|
|
|
Kommentaarid: 31 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
0 :: |
27 |
|
tagasi üles |
|
 |
Stemugram
HV kasutaja
liitunud: 02.12.2001
|
28.07.2012 10:06:11
|
|
|
Peaaegu juba see sobiks, aga kui kirjutada otsingusse "poeg_Jaan Mari", siis peaks see tegema boldiks kolm sõna "poeg" "Jaan" "Mari".
Praegu aga annab ta kaks vastust kus ühes on bold "poeg Jaan" ning teises "Mari".
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
tiitise
HV kasutaja
liitunud: 04.03.2005
|
28.07.2012 11:03:40
|
|
|
Stemugram kirjutas: |
Peaaegu juba see sobiks, aga kui kirjutada otsingusse "poeg_Jaan Mari", siis peaks see tegema boldiks kolm sõna "poeg" "Jaan" "Mari".
Praegu aga annab ta kaks vastust kus ühes on bold "poeg Jaan" ning teises "Mari". |
Põhimõtteliselt teeb järgnev asi seda, mida kirjeldasid:
php:
|
<?php $c = "Silla Jaan, naine Leena; poeg Jaan, naine Mari; poeg Tõnu; tüdruk Leno"; $q = "poeg_Jaan mari"; function highlight($c, $q) { $q = explode(' ', str_replace(array('+', '', '\\', '+', '*', '?', '[', '^', ']', '$', '(', ')', '{', '}', '=', '!', '<', '>', '|', ':', '#', '-', ''), '', $q)); foreach ($q AS $isik){ } return $c; } ?>
|
viimati muutis tiitise 28.07.2012 11:06:01, muudetud 2 korda |
|
Kommentaarid: 6 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
6 |
|
tagasi üles |
|
 |
19Mart94
HV kasutaja
liitunud: 22.06.2010
|
28.07.2012 11:06:22
|
|
|
Mina lahendaksin selle koodi nii:
php:
|
<?php function highlight($c, $q){ foreach($otsisonad as $value) { $tap_otsisonad = str_ireplace("_", " ", $value); $c = str_ireplace($tap_otsisonad, "<b>".$tap_otsisonad."</b>", $c); } else { $c = str_ireplace($value, "<b>".$value."</b>", $c); } } } $c = "Silla Jaan, naine Leena; poeg Jaan, naine Mari; poeg Tõnu; tüdruk Leno; Anna-Mari"; $q = "Silla poeg_Jaan Anna-mari Anna_Mari naine"; highlight($c, $q); ?>
|
See ei kuva listi nii, nagu sul, kuid vast saad siit idee kätte (Funktsiooni vastuse võid vabalt eraldada ; abil ja siis nimekirja koostada)
|
|
Kommentaarid: 33 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
31 |
|
tagasi üles |
|
 |
Stemugram
HV kasutaja
liitunud: 02.12.2001
|
28.07.2012 12:16:16
|
|
|
Tänud!
Paistab, et töötab nii nagu vaja.
Kuigi üks pisiviga on veel. Nimelt kui otsingusse kirjutad nimed väiketähtedega siis vastuses kuvatakse ka need nimed väiketähtedega.
Kuidas saaks, et nimed algaksid ikka suure tähega nagu ka andmebaasis nad on?
ucwords() ka ei aita kuna see ei tea millised sõnad on nimed ja millised mitte.
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
19Mart94
HV kasutaja
liitunud: 22.06.2010
|
28.07.2012 13:57:54
|
|
|
Stemugram kirjutas: |
Tänud!
Paistab, et töötab nii nagu vaja.
Kuigi üks pisiviga on veel. Nimelt kui otsingusse kirjutad nimed väiketähtedega siis vastuses kuvatakse ka need nimed väiketähtedega.
Kuidas saaks, et nimed algaksid ikka suure tähega nagu ka andmebaasis nad on?
ucwords() ka ei aita kuna see ei tea millised sõnad on nimed ja millised mitte. |
php:
|
<?php function highlight($c, $q){ foreach($otsisonad as $value) { $value = str_ireplace("_", " ", $value); $c = preg_replace("/(". $value. ")(?![^<]*>)/i", "<b>\${1}</b>", $c); } $i = 1; $result = ""; foreach($nimed as $nimi) { $result .= $i.". ".$nimi."<br />"; $i++; } return $result; } $c = "Silla Jaan, naine Leena; poeg Jaan, naine Mari; poeg Tõnu; tüdruk Leno; Anna-Mari"; $q = "Silla poeg_jaan anna-mari Anna_Mari naine"; ?>
|
Tõmbasin koodi kokkupoole ning kasutasin su esialgsest koodist ka ühte rida
|
|
Kommentaarid: 33 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
31 |
|
tagasi üles |
|
 |
Stemugram
HV kasutaja
liitunud: 02.12.2001
|
28.07.2012 14:33:34
|
|
|
Tänud!
Nüüd on kõik OK
|
|
Kommentaarid: 2 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
2 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|