Jump to content
php.lv forumi

str_replace un rand savienošana tada ka cikla


Devils666

Recommended Posts

$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? :)

Link to comment
Share on other sites

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 by briedis
Link to comment
Share on other sites

$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 by indoom
Link to comment
Share on other sites

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? :)

Link to comment
Share on other sites

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
*/

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...