str_replace в цикле

iskiz

Новичок
Здравствуйте посетители форума.
Уже довольно долго ломаю голову над одним вопросом. А именно: как сделать замену текста в цикле. А теперь по точнее:

Есть массив такого вида:
PHP:
Array
(
    [1] => Array
        (
            [0] => year
            [1] => 2012
        )

    [6] => Array
        (
            [0] => int
            [1] => SATRip
        )

)
Который записан на переменную "$titlewiwhtext".
Так же есть строка "$stroka = "Какойто текст [int] ([year])". И нужно в строке заменить два значения, а именно "[int]" и "[year]". Тут всё бы ничего, но проблема в том, что количество элементов в массиве неизвестно, то есть массив может быть другим, например:
PHP:
Array
(
    [1] => Array
        (
            [0] => year
            [1] => 2012
        )

    [6] => Array
        (
            [0] => int
            [1] => bass
        )

    [8] => Array
        (
            [0] => how
            [1] => 203
        )

)
Строка для замены соответственно будет иметь вид на подобие: "$stroka = "Какойто текст [int] ([year]) и еще [how]"

Тут и получилась загвоздка. Так как элемент в массиве может быть один, а может двадцать(в строке, в которой нужно будет производить замену, количество заменяемых элементов равно).

Начал я чтото думать:
PHP:
$outputnew = array_keys($titlewiwhtext); \\ В массиве элементы идут не по номеру - как мы видим ключи 1,6 и 8
$titlewhile = 0;
$titlewiwhtextnewf = '';
while ($titlewhile <= count($titlewiwhtext)-1) {
$fn = $titlewiwhtext[$outputnew[$titlewhile]][0];
$fl = $titlewiwhtext[$outputnew[$titlewhile]][1];
$titlewiwhtextnewf = str_replace("[$fn]",$fl,$stroka);
    $titlewhile++;
}
echo $titlewiwhtextnewf;
И посмотрев результат я припомнил очевидную вещь, цикл выдает только последний результат. У кого-то есть идеи для решения этой задачи? И возможно ли это вообще? Спасибо.
 

archcoffe

Новичок
PHP:
$a = array(array('year','2012'),
           array('int','bass'),
           array('how','203'),
);
$stroka = "Какойто текст [int] ([year]) и еще [how]";
foreach($a as $v)
    $stroka = str_replace('['.$v[0].']',$v[1],$stroka );
echo $stroka;
 

Фанат

oncle terrible
Команда форума
я припомнил очевидную вещь, цикл выдает только последний результат.
ничего очевидного здесь нет. цикл вообще никаких "результатов" не "выдаёт". ни последних, ни первых.
 

Yaponchick

Новичок
Я один свернул шею прочитав Title with Text ввиде titlewiwhtext ?!
archcoffe +1
 

iskiz

Новичок
PHP:
$a = array(array('year','2012'),
           array('int','bass'),
           array('how','203'),
);
$stroka = "Какойто текст [int] ([year]) и еще [how]";
foreach($a as $v)
    $stroka = str_replace('['.$v[0].']',$v[1],$stroka );
echo $stroka;
Блин, я что-то вообще не с той стороны полез. Спасибо - работает.
ничего очевидного здесь нет. цикл вообще никаких "результатов" не "выдаёт". ни последних, ни первых.
Да...сделал ошибку при создании темы. Уже не важно, так как вышеуказанный код проще :)
Я один свернул шею прочитав Title with Text ввиде titlewiwhtext ?!
Вообще так и задумывалось :)
 

Фанат

oncle terrible
Команда форума
"очевидная вещь" и "ошибка при создании темы" - это взаимоисключающие параграфы.
Но не будем педантами.
 
Сверху