Devils666 Posted March 24, 2010 Report Share Posted March 24, 2010 $haha = rand(1000, 9999); $massivs = str_replace(" ", "/*$haha*/", $massivs); kā viņu var uztaisīt tā, lai ta rand fukcija katra reize izpilditos savadak, visadi mēģinajis esu un manualus saktijies, bet nu nesanak tāpat piemēram: $massivs = 'bla bla bla bla bla bla bla bla bla bla'; šajā piemērā, man vaig lai katra atstarpes vietā butu cits rand skaitils no 1000 līdz 9999, bet visas ir vienāds visādi izmēģinaju, bet risinājumu neatradu, varbūt kāds var aprādīt reāli ka to varetu izdarit? :) Quote Link to comment Share on other sites More sharing options...
briedis Posted March 24, 2010 Report Share Posted March 24, 2010 (edited) Galvenajā virknē ($s) atrodi vietu, kur parādās meklējamais simbols. strpos. Sadali virkni divās daļas (no 0 - līdz meklējamajam simbolam), un no meklējamā simbola līdz beigām. substr. apvieno virknes, pa vidu ieliekot starpināmo simbolu. Uzstādi šo iegūto kā galveno virkni. $s = $s1 . $replacement . $s2; Veic darbības no sākuma, līdz meklējamais netiek atrasts. Tāds brutālais piegājiens... EDIT: vispār jau vari paņemt vienkārši šo funkciju: http://php.net/manual/en/function.preg-replace-callback.php (kas, man liekas, jau iepriekš tika piedāvāta) Edited March 24, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
Devils666 Posted March 24, 2010 Author Report Share Posted March 24, 2010 (edited) es zinu, viņu skatijos un kaut kas man nesanāk, tāpec jau prasu palīdzību, nevari viņu parādīt, ka ta izskatītos, lai redzu, kur kļūdas? Edited March 24, 2010 by Devils666 Quote Link to comment Share on other sites More sharing options...
briedis Posted March 25, 2010 Report Share Posted March 25, 2010 es zinu, viņu skatijos un kaut kas man nesanāk, tāpec jau prasu palīdzību, nevari viņu parādīt, ka ta izskatītos, lai redzu, kur kļūdas? Parādi, ko esi darījis :) Quote Link to comment Share on other sites More sharing options...
Devils666 Posted March 25, 2010 Author Report Share Posted March 25, 2010 es daudz ko esu darijis, bet nu man tur vairs nav neviens paraugs palicis sagalbat, tad tagad atkal jaraksta, šita viena no lietam, kur galigi neko nerubiju, kaut vai tur ir manuālis Quote Link to comment Share on other sites More sharing options...
indoom Posted March 25, 2010 Report Share Posted March 25, 2010 (edited) $text = 'bla bla bla bla bla bla bla'; $arr = explode(' ',$text); $newtext = current($arr); while(next($arr)!==false) { $newtext .= rand(1000,9999) . current($arr); } echo $newtext; Edited March 25, 2010 by indoom Quote Link to comment Share on other sites More sharing options...
2easy Posted March 25, 2010 Report Share Posted March 25, 2010 njaa indoom, ai, kā mums patīk sarežģīt vnkāršas lietas :D:D:D echo preg_replace_callback('/\x20+/', create_function('', 'return rand(1000, 9999);'), 'bla bla bla bla'); Quote Link to comment Share on other sites More sharing options...
Devils666 Posted March 25, 2010 Author Report Share Posted March 25, 2010 njaa indoom, ai, kā mums patīk sarežģīt vnkāršas lietas :D:D:D echo preg_replace_callback('/\x20+/', create_function('', 'return rand(1000, 9999);'), 'bla bla bla bla'); ideāli, paldies, izradas nav tik sarežģīti ka domaju :)) vēl tikai viena lieta, ka es varētu pievienot rand funkcijai blakus parastu tekstu abas puses? :) Quote Link to comment Share on other sites More sharing options...
2easy Posted March 25, 2010 Report Share Posted March 25, 2010 (edited) echo preg_replace_callback('/\x20+/', create_function('', 'return "parasts teksts" . rand(1000, 9999) . "abās pusēs";'), 'bla bla bla bla'); Edited March 25, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
Devils666 Posted March 25, 2010 Author Report Share Posted March 25, 2010 ak ja, loģiski, nu liels paldies :) Quote Link to comment Share on other sites More sharing options...
indoom Posted March 26, 2010 Report Share Posted March 26, 2010 2easy, kas tad tev manā variantā šķita tik sarežģīts? Vismaz tas darbojas krietni ātrāk. Regexpus cenšos neizmantot, ja vien tas ir iespējams. Quote Link to comment Share on other sites More sharing options...
rATRIJS Posted March 26, 2010 Report Share Posted March 26, 2010 Nu kaa - tavu nevar sarakstiit vienaa rindinjaa :D Quote Link to comment Share on other sites More sharing options...
2easy Posted March 26, 2010 Report Share Posted March 26, 2010 saskaiti baitus (un laiku), cik daudz ir jāraksta tavs kods, un cik mans :D:D:D aa un par performanci u r right! :)) tavs kods izpildās vidēji par kādiem 20% ātrāk ;) $gnTm = 0; function tmu() {list($nSecU, $iSec) = explode(' ', microtime()); return $iSec + $nSecU;} // micro time - izdod pašreizējo unix laiku: sekundes + mikrosekundes (aiz "komata") function tmrSet() {global $gnTm; $gnTm = tmu();} // set timer function tmrGet() {global $gnTm; return tmu() - $gnTm;} // get timer function tmrEcho($sInfo = '') {printf('%s%.4f<br />', $sInfo, tmrGet());} // echo timer - parāda laiku ar precizitāti līdz 100 mikrosekundēm (ilgākām darbībām). lielākas precizitātes mērījumiem desmitos mikrosekunžu (vai vēl mazāk) ir jāņem vērā arī pašas funkcijas izsaukuma laiks (tb tad būtu jāizmēra function call overhead) $text = str_repeat('bla bla bla bla bla bla bla bla bla bla', 100); // 1000x bla tmrSet(); $s = preg_replace_callback('/\x20+/', create_function('', 'return rand(1000, 9999);'), $text); tmrEcho('preg_replace_callback(): '); tmrSet(); $arr = explode(' ',$text); $newtext = current($arr); while(next($arr)!==false) { $newtext .= rand(1000,9999) . current($arr); } $s2 = $newtext; tmrEcho('indoom kods: '); /* aptuvens vidējais rezultāts uz mana pc: preg_replace_callback(): 0.0053 indoom kods: 0.0042 */ Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.