поиск->запрос->замена

avgaz

Новичок
Здравствуйте подскажите как реализовать имеется к примеру html страница в переменной $html на ней в разных местах расположены значения {section=1} ...... {section=54} где число это номер в MYSQL таблице в которой хранится html который необходимо подставить в место {section=1}
как реализовать такое?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Через нормальный шаблонизатор
 

avgaz

Новичок
Это не для шаблонизатора, это к уже существующей cms не большой вывод баннеров в разных местах.
 

Hello

Новичок
Здравствуйте подскажите как реализовать имеется к примеру html страница в переменной $html на ней в разных местах расположены значения {section=1} ...... {section=54} где число это номер в MYSQL таблице в которой хранится html который необходимо подставить в место {section=1}
как реализовать такое?
Через preg_replace_callback или str_replace
 

avgaz

Новичок
можно пример, а то не как понять не могу вот к примеру
str_replace('{section="1"}', "замена", $html);
но как мне найти не только {section="1"} но и другие? и как мне заменить на html из таблицы?
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@avgaz, при str_replace тебе придется проходиться по всем блокам, то есть вызовов str_replace будет столько, сколько у тебя блоков.
 

Hello

Новичок
@avgaz, передать массивы первыми 2-мя параметрами
PHP:
str_replace(['{section="1"}', '{section="2"}'], ["замена 1", "замена 2"], $html);
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
О том, чтобы заполнить массив автоматически ты не подумал даже, признайся.
 

antson

Новичок
Партнер клуба
kiss, самое тупое решение.
сделать выборку всех записей из таблицы (если их до 100)
в цикле сделать до ста замен
$html = str_replace('{section=" ключ "}', "замена", $html);
 

avgaz

Новичок
@antson, Да мне тоже кажется делать замену в цикле не очень решение да же до 100 позиции ((
решил в цикле составить условие, то есть есть запрос в БД где по позициям далее формируется переменная и далее замена
PHP:
$sql->query( "SELECT * FROM advertisements");
       while( $row = $sql->fetchrow() ) {
         $ad_location .= "'{section={$row['ad_location']}}',";
  $ad_html .= "'{$row['ad_html']}',";
       }
  $pozic = "[$ad_location]";
  $replayads = "[$ad_html]";
  $html = str_replace($pozic, $replayads, $html);
то есть переменная $pozic формирует такую строку ['{section=5}','{section=15}','{section=20}',]
а $replayads соответственно ['замена','замена1','замена2',]
Но вот почему то работать не хочет то есть если в str_replace вставить эти перемены как в коде выше не какой замены не происходит, а вот если вставить то что формируют эти переменные то все заменяет, в чем проблема то тут?
 

avgaz

Новичок
То есть проще говоря вот так не хочет работать

PHP:
$pozic = "['{section=5}','{section=15}','{section=20}',]";
  $replayads = "['замена','замена1','замена2',]";
  $html= str_replace($pozic, $replayads, $html);
а вот так работает
PHP:
        $html = str_replace(['{section=5}','{section=15}','{section=20}',], ['замена','замена1','замена2',], $html);
почему?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@avgaz, потому что ты нуб и не читаешь мануал. Строки и массивы - разные вещи. Иди читай про то, как переделать твои строки на массивы
 

avgaz

Новичок
Ну ведь логично, что я не в курсе, по этому и спрашиваю, а в место очередного троллинга лучше бы пример показали.
А то переводим строку в массив из кода выше
$pozic = explode(",", $ad_location);
$replayads = explode(",", $ad_html);
но опять не работает
 
Последнее редактирование:

antson

Новичок
Партнер клуба
Код:
$pozic = array();
$replayads = array();

$sql->query( "SELECT * FROM advertisements");
       while( $row = $sql->fetchrow() ) {
         $pozic[] = "{section=".$row['ad_location']."}";
        $replayads[]= $row['ad_html'];
       }

  $html = str_replace($pozic, $replayads, $html);
писал же сделай тупо. когда заработает будешь улучшать.

код выше не заработает. подказка в сформированной строке нет кавычек вокруг номера
 

avgaz

Новичок
писал же сделай тупо. когда заработает будешь улучшать.

код выше не заработает. подказка в сформированной строке нет кавычек вокруг номера
Спасибо, так работает, но без кавычек в шаблоне
то есть так section=5
а как улучшить то?
и ещё вопрос такой, если в базе дынных нет скажем позиции section=21 или других, а на странице они прописаны, как сделать что бы их вырезало при этом?
 
Последнее редактирование:
Сверху