[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Замена внутри определенных тегов внутри массива
kav1
Здравствуйте.

Имеется массив:

$massiv = array ('some text <code>1234</code> some text', 'some text  <code>12345</code> some text <code>0000</code>','some text <code>123</code> some text',
'some text <code>5678</code> some text', 'some text <code>1231234</code> some text', 'some text <code>5678</code> some text <code>000</code>', 'some text <code>999</code> some text');


Как видно, число элементов в массиве (7) не соответствует числу вхождений <code>что-то</code> (9)

Имеется еще два массива:

$a = array ('1234', '12345','0000','1231234', '5678', '123', '5678','000', '999');
$b = array ('abcd', 'abcde','zzzz','abcabcd', 'efgh', 'abc', 'efgh','zzz', 'xxx');


Кол-во <code>что-то</code> в $massiv равно кол-ву элементов массива $a и равно кол-ву элементов массива $b, а именно 9.

Хочу заменить в $massiv последовательно внутри каждого <code>что-то</code> элемент массива $a на элемент массива $b, чтобы получить:

$massivnew = array ('some text <code>abcd</code> some text', 'some text  <code>abcde</code> some text <code>zzzz</code>','some text <code>abc</code> some text',
'some text <code>efgh</code> some text', 'some text <code>abc</code> some text', 'some text <code>efgh</code> some text <code>zzz</code>', 'some text <code>xxx</code> some text');


То есть внутри первого <code>что-то</code> заменить $a[1] на $b[1], внутри второго <code>что-то</code> - заменить $a[2] на $b[2] и т.д.

И вроде бы хочется это сделать следующим образом:

$massivnew = str_replace($a, $b, $massiv, $count);


Но возникает следующая проблема - например, внутри подстроки 12345 имеется и подстрока 1234, и, стало быть, замена происходит не так, как я хочу. На выходе имеем:

array(7) { [0]=> string(37) "some text <code>abcd</code> some text" [1]=> string(57) "some text <code>abcd5</code> some text <code>zzzz</code>" [2]=> string(36) "some text <code>abc</code> some text" [3]=> string(38) 
"some text <code>efgh</code> some text" [4]=> string(40) "some text <code>abcabcd</code> some text" [5]=> string(56) "some text <code>efgh</code> some text <code>zzz</code>" [6]=> string(36) "some text <code>xxx</code> some text" }


Видим abcd5 вместо abcde

$count в итоге также покажет, что получилось все не так - вместо желаемого $count=9 вывод данной переменной будет равен 10.

Как можно решить данную проблему?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.