Linkpusher

Linkpusher
Рейтинг
176
Регистрация
28.12.2007
Интересы
Точу ножи.

не считая ужасного синтаксиса, что именно вас тут смущает?

Прекратите себя обманывать пока деньги еще при вас.

Лучший совет в теме :)

Marat_Kh:
Ищем все %ххх% в шаблоне, перебираем, если есть на ххх условие ($a), разбираем его по &.
Перебираем итог, выдергиваем (preg_match_all('#(.+)(==|>|<)(.+)#u', $mm[2][$key], $mmm);) ключ параметра ($mmm[1][0]), логику $mmm[2][0] (>,< или ==), значение ($mmm[3][0]) и отдаем вместе с массивом параметров товара ($data) _cmpr($k, $logic, $v, $data) для сравнения...
если итоговый $re тру , то заменяем в тексте ($t) %xxx% на $b['xxx']. Все ;)

Ага, вот только не понятно почему это проще/правильней, чем assert()? 🍿


$x = "$price > 10 && $country == 'Китай' && $material == 'шёлк'";

replacement[$var_name] = (assert($x)) ? 'строка' : '';


Мне же не втупую кусок рабочего кода скопировать хочется, а понять логику почему здоровенная конструкция с вложенными циклами - лучше, чем дефолтная функция, которая даёт нужный результат...

Drujba:
toxic steel, не сработало

А то, что стиль, который я запостил и который вы продемонстрировали на скриншоте в окружении рекламы с пиписьками, мягко говоря, различаются, вас не смущает? :)

totamon:
в вашем описании я не увидел и не понимаю тоже что вы через IF проверяете и выводите?

Ну тогда я сдаюсь...

Не выбирается товар из БД. Он есть уже у нас "на руках", мы с ним работаем, с конкретно его характеристиками, с его описанием.

30 минут размялся

Мудрёно :) Ща буду курить :)

над групприровкой OR и AND условий подумать

Мне только AND надо, OR не будет.

И можно отбросив первую часть, т.к. весь набор %переменных% известен заранее, нужно просто определиться с заменой - "строка" или "пусто".

какой?

10 символов.

Конечно же всё в БД.

SERM-service:
Долго пытался понять чего вы хотите, возможно так и не понял, но если понял то я бы сделал так:
if($price<10) $titleprice="недорогие";
elseif($price>10) $titleprice="премиальные";
else $titleprice="";

Вы подстроились под буквальное, упрощённое условие из примера. Конечно, если просто взять условие с $price из примера, то предложенный вами способ - прост и очевиден.

т.е. каждая в своей ячейке?
тогда я вообще не понимаю проблемы...(((

Окей, давайте я попробую переформулировать ещё раз...

Есть товар - "Труселя, артикул 123456", его набор характеристик:

$price =12;

$coutry = 'Китай';

$size = '7xl';

$color = 'красный';

$material = 'шёлк';

$quantity = 12;

Переменная, которую определил контентщик:

%premium% = "Шикарные труселя из нежнейшего шёлка, сотканного лучшими восточными мастерами, тысячелетиями хранящими и передающими свои секреты.".

%limited% = "Премиальная коллекция, лимитированная серия."

Условия переменной:

%premium% - ($coutry == 'Китай' && $price > 10 && $material == 'шёлк')

%limited% - ($price > 10 && $quantity < 10)

-------------------------------

Формула:

Рады представить вам новую коллецию! %premium% Трусы разработаны лучшими немецкими инженерами, обладают эффектом памяти и учитывают индивидуальные особенности владельца. %limited% Страна производства - <?=$country?>

-------------------------------

Если условие для %premium% = true, в описании трусов появляется заданная строка.

%limited% с имеющимся набором характеристик - false, поэтому в примере не подставляется.

-------------------------------

Получаем на выходе:

Рады представить вам новую коллецию! Шикарные труселя из нежнейшего шёлка, сотканного лучшими восточными мастерами, тысячелетиями хранящими и передающими свои секреты. Трусы разработаны лучшими немецкими инженерами, обладают эффектом памяти и учитывают индивидуальные особенности владельца. Страна производства - Китай.

-------------------------------

не понимаю проблемы...(((

проблема не в характеристиках, а в том, как хранить условия для подстановок. В примере это:

  • $coutry == 'Китай' && $price > 10 && $material == 'шёлк'
  • $price > 10 && $quantity < 10

А если в условии переменных не 2-3, а десяток? Это офигенно громоздкий цикл с if-else получается.

Выше предложили рабочее решение с eval, но eval тут реально не оправданно избыточен.

Но ведь можно же использовать assert($x), где $x - это прям строка условия?

Вы про какую фильтрацию? Где и что фильтруется?


<html>
<head>
<meta charset="utf-8">
<style>

ul {
padding: 0;
text-align: justify;
-moz-text-align-last: justify;
text-align-last: justify;
background: #f2f2f2;
}

li {
display: -moz-inline-stack;
display: inline-block;
*display: inline;
}

</style>

</head>

<body>
<ul>
<li>Главная</li>
<li>Новости</li>
<li>Товар</li>
<li>Контакты</li>
</ul>
</body>
</html>

Всего: 1673