sfx Posted July 6, 2004 Report Share Posted July 6, 2004 Nu lieta taada, kaaa lai no $text vai nu paarsuac visus lamvaardus vai vismaz kautkaa liidziigi! Nu vismaz pasakiet ar kaadu funkciju var chekot $text thx! Link to comment Share on other sites More sharing options...
sfx Posted July 6, 2004 Author Report Share Posted July 6, 2004 aaa, un kaa lai nolasa no $text kaadu $vaardu kursh lielaaks pa 100 simboliem? Link to comment Share on other sites More sharing options...
rnc Posted July 6, 2004 Report Share Posted July 6, 2004 Tātad, varētu būt apmēram šādi. 1) Tev ir teksta fails, piemēram lamuvardi.txt Viņa sastāvs ir šāds. fuck bitch daunis pimpis Katrā rindā savs lamuvārds. Taisam f-ju. function strip_bad_words($teksts,$fails) { $o = file($fails); for ($i=0;$i<=count($o);$i++) { $badword = trim($o[$i]); $teksts = str_replace($badword,str_repeat("*",strlen($badword)),$teksts); } return $teksts; } Tad pielietojam :-) $teksts = 'fuck you bitch, daunis, gejs, lalala'; $fails = 'lamuvardi.txt'; $teksts = strip_bad_words($teksts,$fails); echo $teksts; Ceru, ka tas ir tas ko vajadzēja :-) Link to comment Share on other sites More sharing options...
Venom Posted July 6, 2004 Report Share Posted July 6, 2004 mazliet paatrināts uz cikla rēķina, palēnināts pirmā un pēdejā slikā vārda burta izvadam (ķipa f**k, lai tiem, kam vajag, tomēr saprot). function strip_bad($teksts,$fails) { $o=file($fails); array_unshift($o,'empty'); $i=sizeof($o); while(--$i) { $badword = trim($o[$i]); $teksts=str_replace($badword,$badword[0].str_repeat('*',strlen($badword)-2).$badword[strlen($badword)-1],$teksts); } return $teksts; } Problēma: neapstrādā vārdus ar MaINīGU reĢisTRu. Ja php5, tad str_ireplace. Citādi kā vienmēr palīdz regulārie izteikumi: $teksts=preg_replace('/('.$badword.')/i',str_repeat('*',strlen('\\1')),$teksts); turpat ciklā Link to comment Share on other sites More sharing options...
sfx Posted July 6, 2004 Author Report Share Posted July 6, 2004 oooo thx, itkaa iet bet ir viens gljuks: Notice: Undefined offset: 3 in coment_add.inc on line 8 nu es tak saku **** un **** un veel ***** 8 line = $badword = trim($o[$i]); kas tur nav taa kaa vajag? Bet taa viss text aizgaaja! Varbuut veel vari paliidzeet!!! Kaa lai nolasa no $text kaadu $vaardu kursh lielaaks pa 100 simboliem? piemeeram izmest taadus vardus kaa: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz Link to comment Share on other sites More sharing options...
sfx Posted July 6, 2004 Author Report Share Posted July 6, 2004 ar to '8 line' tiku galaa! Link to comment Share on other sites More sharing options...
rnc Posted July 6, 2004 Report Share Posted July 6, 2004 Kaa lai nolasa no $text kaadu $vaardu kursh lielaaks pa 100 simboliem?piemeeram izmest taadus vardus kaa: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz Iespējams, ka Tev ir vajadzīgs wordwrap(), bet ja nu tiešām vajag IZMEST tos vārdus, tad piemēram vareētu kaut kā šādi. <?php $teksts = "te ir tas teksts ar visiem garajiem un iisajiem vaardiem"; $garums = 100; $wordArr = explode(" ",$teksts); foreach ($wordArr as $word) if(strlen($word) <= $garums) $newArr[] = $word; $teksts = implode(" ",$newArr); echo $teksts; ?> Nezinu vai strādā, neesu testējis, bet ideja ir ~ tāda. Gan jau, ka kādam ienāks prātā kaut kas labāks :-) Iespējams, ka to var izdarīt ar regulārajām izteiksmēm, bet neesu pārliecināts. Link to comment Share on other sites More sharing options...
sfx Posted July 6, 2004 Author Report Share Posted July 6, 2004 Liels paldies jums, viss straadaa ! THX :wub: :D Link to comment Share on other sites More sharing options...
Venom Posted July 6, 2004 Report Share Posted July 6, 2004 Ideja: aizvietot simbolu secību, kas netiek pārrauta ar atstarpi, ja tā ir garāka par 20 simboliem un aizvietot to ar 12simb.'...'.5simb: preg_replace(/([^\ ]*){20,}/,substr('\\1',0,12).'...'.substr('\\1',-5),$text); sakarā ar: <cut> 8 line = $badword = trim($o[$i]); kas tur nav taa kaa vajag?</cut> tu laikam izmanto šo te <cut> for ($i=0;$i<=count($o);$i++) </cut> variantu, tad zini jēl, ka tur jābūt for ($i=0;$i<=sizeof($o)-1;$i++) vai pat labāk $tmp=sizeof($o)-1; for ($i=0;$i<=$tmp;++$i) bet, tā kā secībā kādā vārdi tiek nomainīti (no pirmā līdz pēdējam, vai no pēdējā līdz pirmam) nav svarīga, iesaku tomēr masīva indeksu mazināt, pie tam tieši ar pre-dekrementēšanu kāpēc: a) kad skaitītājs tiek palielināts (++$i,$i++), tiek pārbaudīts, vai tā tips nav jāpaplašina (piem no byte (līdz 255) uz int (255 ...65355; ja neņem vērā "-" vērtības)) - papildus operācija; ja tas tiek pazemināts (--$i,$i--), tad tipa maiņa notiek tikai šķērsojot 0. B) $i++ nozīmē - atgriezt $i vērtību lai to varētu palielināt to par 1, izdarīt to, atgriezt izteiksmē ++$i nozīmē palielināt $i vērtību par 1 (lai nu kāda tā būtu), atgriezt vērtību izmantojot a+b uz katra cikla tiek ietaupītas 2 zemākā līmeņa operācijas. of Mr.Venom's Best Practices Link to comment Share on other sites More sharing options...
sfx Posted July 6, 2004 Author Report Share Posted July 6, 2004 He, thx, tieshaam! es ilgu laiku ar to ciiniijos bet iisti nezinaaju kaadas f-jas tur ir izmantotas! Bet tagad viss ruleee :))) :D Link to comment Share on other sites More sharing options...
Aleksejs Posted July 6, 2004 Report Share Posted July 6, 2004 Man kā datoriķus beigušam rodas loģisks jautājums: Vai nevar visus tos lamuvārdus sakrāmēt kaut kādā AWL binārajā kokā, lai ātrāk meklēšana notiek? Link to comment Share on other sites More sharing options...
des Posted July 6, 2004 Report Share Posted July 6, 2004 (edited) Vai nevar visus tos lamuvārdus sakrāmēt kaut kādā AWL binārajā kokā, lai ātrāk meklēšana notiek? Man ir shausmiigas aizdomas, ka to lamu vaardu nebuus tik daudz, lai izmantot AVL buutu efektiivi. Edited July 6, 2004 by des Link to comment Share on other sites More sharing options...
bubu Posted July 6, 2004 Report Share Posted July 6, 2004 Tā kā PHP masīvu realizācija ar stringiem atslēgu vietā tiek implementēta ar hešinga palīdzību, tad var tos visus lamuvārdus iekrāmēt masīvā apmēram tā: $laumvards['fuck']=0; un tad, kad vajag pārbaudīt vai konkrēt vārds ir cenzējams vai nē, atliek if (array_key_exists($vards, $lamuvards)) {....}. Un man ir tādas aizdomas, ka šis variants var izrādīties ātrāks nekā AVL koki. ;) Link to comment Share on other sites More sharing options...
Venom Posted July 7, 2004 Report Share Posted July 7, 2004 $lamuvardi=arrray('šis','un tas'); in_array($vards,$lamuvardi); kaut kā pierastāk Link to comment Share on other sites More sharing options...
rnc Posted July 7, 2004 Report Share Posted July 7, 2004 Man kā datoriķus beigušam rodas loģisks jautājums:Vai nevar visus tos lamuvārdus sakrāmēt kaut kādā AWL binārajā kokā, lai ātrāk meklēšana notiek? Man kā datoriķus nebeigušam (i pat nesākušam) cilvēkam rodas jautājums, kas ir AWL binārajs koks ? Link to comment Share on other sites More sharing options...
Recommended Posts