Gosha Posted June 28, 2004 Report Share Posted June 28, 2004 Uztaisīju nelielu meklēšanu sava web-lapiņā: 1.MySQL SELECT bla bla FROM bla bla LIKE "%key%" 2.Pārbaudīt vai meklējamais vārds ir tekstā - strstr(strip_tags($text),$key) 3.Tālāk gribu iezīmēt "key" ar kādu krasu un sākas Piem: meklējamais vārds sakrit ar bildes nosaukumu un rezultātā iegūstam: <img src="<font style="color:yellow">key"/> Tātad jautājums ir šāds: kā iezīmēt nepieciešamo vārdu un naiztikt HTML tagus? Variants ar strip_tags neder, jo tomēr gribas saglabāt oriģinālo formatējumu Link to comment Share on other sites More sharing options...
hu_ha Posted June 28, 2004 Report Share Posted June 28, 2004 nu nedaudz pameklējam un skatamies, varbūt, ka citu labdaru darinājumi ir noderīgi: http://hackers.lv/?mid=cat&upcat=22&id=3315 Link to comment Share on other sites More sharing options...
Venom Posted June 29, 2004 Report Share Posted June 29, 2004 > 2.Pārbaudīt vai meklējamais vārds ir tekstā - strstr(strip_tags($text),$key) Es izma Link to comment Share on other sites More sharing options...
Gosha Posted June 30, 2004 Author Report Share Posted June 30, 2004 Special thanks goes to hu ha :) Tomēr, būtu interesanti zināt ko gribēja teikt cienījamais Venom Link to comment Share on other sites More sharing options...
Venom Posted July 1, 2004 Report Share Posted July 1, 2004 > 2.Pārbaudīt vai meklējamais vārds ir tekstā - strstr(strip_tags($text),$key) Jā kaut kur pa ceļam connection aprāvās ;) Augstākminētā koda vietā es izmantotu if (!strpos(strip_tags($text),$key)===false) vienkārši optimizācijas pēc, jo strstr atgriež veselu stringa gabalu (resp. tas var būt xxKb teksts, kurā pēdējais vārds ir meklējamais), bet strpos - pirmo pozīciju (vai false, ja netika atrasts, bet jāuzmanās, jo pozīcija var būt 0-tā, tāpēc ===) Vispārējā veidā tekstu starp tagiem meklētu ar regulāro izteikumu, līdzīgu šitam gabalam [nav mēģināts, jo parasti tekstu arī neiezīmēju]: /\<[^>]+\>(.*)(\<\/[^>]+\>|\<[^>]+\>)/sm * teksta gabals, kas sākas ar < un tam seko vismaz viens burts, pēc tam >, pēc kura "teksts starp tagiem", un tags tiek vai nu aizvērts - </ kuram seko vismaz viens burts, tad seko > - vai tiek atvērts jauns tags (lai iegūtu arī tekstu no <option...>teksts <option...> u.l.); teksts starp tagiem var būt vairākās līnijās * Pamainot to uz kaut ko līdzīgu '/\<[^>]+\>(.*)('.$meklejamais teksts.')(.*)(\<\/[^>]+\>|\<[^>]+\>)/ism' varam izmantot nomainīšanu, kas saglabā arī atrastā teksta keisu (case, piemirsās tas lv vārds) preg_replace($preg,'\\1<b>\\2</b>\\3') (of course, te jautājums par tekstu, kas sakrīt, bet atkārtojas vairākkārt, droši vien jāizmanto /U vai jāpiedomā klāt str_replace preg_replace-am kā otro parametru) Pregu var izmantot arī MySQL pieprasījumā, jo MySQLam ir tāda fiška kā SELECT ... WHERE `kolonna` REGEXP 'reg.izteiksme', resp. var uzreiz atlasīt tikai tādas kolonnas, kur teksts ir "starp tagiem" un mazināt slodzi, ja kāds searchā ievada "href" Link to comment Share on other sites More sharing options...
freak Posted January 3, 2005 Report Share Posted January 3, 2005 Tam hackers.lv variantam ir viens mīnus. Viņš nemeklē pēc latviešu simboliem piemēram: ā, ē utt. Link to comment Share on other sites More sharing options...
Recommended Posts