Autor Zpráva
swetko
Profil
dobry den,
mam takyto kod:
<?php
$text="8text8 7text7 6text6 5text5 4text4 3text3 2text2 1text1";
$je=1;
while ($je<=8){
$ma_byt="XX";  
$upravene=str_replace($je++, $ma_byt, $text);
echo $upravene."<br>";
}
?>


chcel by som aby bol takyto vystup:
XXtextXX XXtextXX XXtextXX XXtextXX XXtextXX XXtextXX XXtextXX XXtextXX

samozrejme vystup je takyto:
8text8 7text7 6text6 5text5 4text4 3text3 2text2 XXtextXX
8text8 7text7 6text6 5text5 4text4 3text3 XXtextXX 1text1
8text8 7text7 6text6 5text5 4text4 XXtextXX 2text2 1text1
8text8 7text7 6text6 5text5 XXtextXX 3text3 2text2 1text1
8text8 7text7 6text6 XXtextXX 4text4 3text3 2text2 1text1
8text8 7text7 XXtextXX 5text5 4text4 3text3 2text2 1text1
8text8 XXtextXX 6text6 5text5 4text4 3text3 2text2 1text1
XXtextXX 7text7 6text6 5text5 4text4 3text3 2text2 1text1

chapem ze preco je to tak ale neviem to napisat mnou zelanym sposobom

poradite mi ?

dakujem
AM_
Profil
str_replace má čtvrtý nepovinný výstupní parametr count. takže
$ma_byt="XX";  
$upravene=str_replace($je++, $ma_byt, $text, $count);
if ($count > 0) { echo $upravene."<br>"; }
}
TomášK
Profil
$text="8text8 7text7 6text6 5text5 4text4 3text3 2text2 1text1";
$je=1;
while ($je<=8) {
  $ma_byt="XX";  
  $upravene=str_replace($je++, $ma_byt, $text);
}
echo $upravene."<br>";
swetko
Profil
AM_
to vypise to iste ako predtym - osem riadkov a na kazdom jedna zmenena hodnota

TomášK
vypise: XXtextXX 7text7 6text6 5text5 4text4 3text3 2text2 1text1
TomášK
Profil
swetko
Máš pravdu, měl jsem to vyzkoušet.
$text="8text8 7text7 6text6 5text5 4text4 3text3 2text2 1text1";
$je=1;
$upravene = $text;
while ($je<=8) {
  $ma_byt="XX";  
  $upravene=str_replace($je++, $ma_byt, $upravene);
}
echo $upravene."<br>";

Kód AM_ nedělá úplně totéž, záleží na tom, co přesně chceš. Zalomení řádků lze odstranit přesunutím <br> za konec cyklu.
swetko
Profil
TomášK
dakujem krasne, toto je to co som potreboval
AM_
Profil
Jo, sorry, ze zadání se to nedalo jednoznačně pochopit. Tohle jde ještě jednodušeji:
$upravene = str_replace(array(1,2,3,4,5,6,7,8), $ma_byt, $upravene); 

a máš to jedním příkazem bez cyklu.
swetko
Profil
AM_
ano ale $je<=8 ja neskor chcem nahradit $hodnotou, ktora nebude vzdy rovnaka, neviem ako by to fungovalo
AM_
Profil
tak si to pole vytvoříš dynamicky, řekněme:
$to_replace = array();
for ($i = 1; $i <= $max; $i++) $to_replace[] = $i;

nebo tak prostě podobně. Jednoduše řečeno, pokud chceš, aby se ti jedním str_replace nahradilo více různých podřetězců, nacpi všechny možnosti do pole a předej je str_replace, které zavoláš jen jednou. Možná by to šlo i přes regulární výrazy, tedy preg_replace, ale to těžko říct, když nevidím, jak to bude doopravdy.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: