[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: replace
Andrey
Есть текст
<div>Вася</div>
<div>Маша</div>
<div>Саша</div>
<div>Митя</div>

Как сделать replace чтоб вышло:

<div id="1">Вася</div>
<div id="2">>Маша</div>
<div id="3">>Саша</div>
<div id="4">>Митя</div>



Спустя 1 час, 17 минут, 52 секунды (3.11.2009 - 13:33) twin написал(а):
PHP
<?php

$text1 
'<div>Вася</div>
<div>Маша</div>
<div>Саша</div>
<div>Митя</div>'
;



$text2 '<div id="1">Вася</div>
<div id="2">>Маша</div>
<div id="3">>Саша</div>
<div id="4">>Митя</div>'
;

$text1 str_replace($text1$text2$text1);

echo 
$text1;
biggrin.gif
А если серьёзно, то не ясны входящие условия. По порядку надо или в зависимости от маш и саш?

Спустя 54 минуты, 48 секунд (3.11.2009 - 14:28) Андрей написал(а):
Входящие условия

$text1 = '<div>Вася</div>
<div>Маша</div>
<div>Саша</div>
<div>Митя</div>';

Нужно чтоб каждий div имел id = номер по порядку


Спустя 2 минуты, 13 секунд (3.11.2009 - 14:30) Gabriel написал(а):
и зачем тут реплейс? blink.gif

Спустя 5 минут, 21 секунда (3.11.2009 - 14:36) andrey написал(а):
Если быть точным в базе Mysql есть поле с данными

<div>Вася</div>
<div>Маша</div>
<div>Саша</div>
<div>Митя</div>

Считываю его и нужно пронумировать divы чтоб потом сделать ссылки

<a href="#1">
<div name="1">>Маша</div>
<div name="3">>Саша</div>
<div name="4">>Митя</div>';

Спустя 7 минут, 17 секунд (3.11.2009 - 14:43) sergeiss написал(а):
Цитата (andrey @ 3.11.2009 - 15:36)
сли быть точным в базе Mysql есть поле с данными...

А зачем такой изврат? Причем, изврат полный.
Держи в БД только список имен, безо всяких там дивов. И будет тебе счастье smile.gif Тогда ты сможешь при выводе формировать всё, что угодно. И это будет проще.


Спустя 4 минуты, 1 секунда (3.11.2009 - 14:47) Андрей написал(а):
Втом то и дело что уже есть забитая база и ее нужно корректно вывести

Спустя 12 минут, 13 секунд (3.11.2009 - 14:59) sergeiss написал(а):
А если сначала преобразовать нужные таблицы, а потом уже выводить? Или это тоже "низзя"?
Ежели никак по-другому не получится, то надо:
1. Разбить текст на массив, каждый элемент которого равен одной строке из исходного текста.
2. В каждом элементе массива делаем нужные замены... Это надо для того, чтобы можно было "унифицировать" обработку, например, сделать функцию. Или просто внутри цикла делать нужны преобразования.
3. Опять соединяем вместе всё в одну строку.

Спустя 4 минуты, 38 секунд (3.11.2009 - 15:04) Gabriel написал(а):
PHP
<?php
$i 
1;
$var3 '<div id="' $i++ .'">';
while ( 
$var mysql_fetch_assoc$call_bd ) ) {
    
$var2 str_replace$var['some'], $var3 );
    echo 
$var2;
}

ну наверное гдето так. ануко експерты попинайте меня!!!

Спустя 12 минут, 37 секунд (3.11.2009 - 15:17) glock18 написал(а):
1. $var3 внутрь цикла
2. если выбирается в одной ячейке, то цикл нужно типа
$str = 'куча дивов';
PHP
for ($i = 1; $str = str_replace('<div>', '<div id="' . $i . '">', $str, 1); $i++);

Спустя 1 минута, 13 секунд (3.11.2009 - 15:18) andrey написал(а):
Пробовал вот так..
Но как увеличивать $i

$desc="<div>Вася</div>";
function next_link($matches)
{
// как обычно: $matches[0] - полное вхождение шаблона
// $matches[1] - вхождение первой подмаски,
// заключенной в круглые скобки, и так далее...
return '<a name="link'.$i++.'"></a>'.$matches[0];
}

echo preg_replace_callback('/(<div.*>)(.*)(<\/div>)/imxsU', "next_link",$desc);

Спустя 5 минут, 14 секунд (3.11.2009 - 15:23) Gabriel написал(а):
andrey
увеличивать в цыкле $i++
или еше лутше вырезать дивы к бабушке (как сказал серж ето не хорошо хранить дивы в табле) и сделать в цыкле так
PHP
echo '<div id="'.$i++.'">'.$тут имя без дивов.'</div>';

Спустя 4 минуты, 47 секунд (3.11.2009 - 15:28) andrey написал(а):
Вкаком цикле функция preg_replace_callback как я понял вызывает функцию next_link столько сколько найдет в тексте <div></div>
и куда цикл

Спустя 1 минута, 52 секунды (3.11.2009 - 15:30) andrey написал(а):
база данных это joomla
а там все данные в виде html

Спустя 38 секунд (3.11.2009 - 15:30) glock18 написал(а):
andrey
1. у тебя регулярка неправильная.
2. прислушайся и сделай по-нормальному. sql скрипт, который разложит все по полочкам, вместе с построением самих полочек займет 2-3 часа.

Цитата
база данных это joomla
а там все данные в виде html

отжог, однако.
Быстрый ответ:

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