$data = $db->query('SELECT * FROM news');
foreach($data as $res){
function isBalanced(str) {
// пары открывающих-закрывающих скобок
var br = "(){}[]";
// стек открытых скобок
var st = [];
// бежим по всей строке
for (var i = 0; i < str.length; ++i) {
// текущий символ
var ch = str[i];
// ищем символ в скобках
var ind = br.indexOf(ch);
// если скобка найдена
if (ind >= 0) {
// проверяем, какая это скобка
if (ind & 1) {
// если закрывающая скобка, проверяем стек
// стек пуст - плохо
if (!st.length) return false;
// извлекаем последнюю открытую скобку из стека
var last_br = st.pop();
// если она не соответствует закрывающей скобке - тоже плохо
if (last_br != br[ind - 1]) return false;
} else {
// открывающую скобку просто пихаем в стек
st.push(ch);
}
}
}
// если после обхода всей строки стек пуст - всё ок
return !st.length;
}
<?
$str = "{Пожалуйста|Просто} сделайте так, чтобы это {удивительное|крутое|простое} тестовое предложение {изменялось {быстро|мгновенно} случайным образом|менялось каждый раз}";
$finishStrs = array();
getVariants($str);
function getVariants($str) {
global $finishStrs;
$strs = array();
if(preg_match("~\{([^{}]+)\}~siU", $str, $m)) {
$foundExpression = $m[1];
$currentVariants = explode("|", $foundExpression);
foreach($currentVariants as $var) {
$strs[] = str_replace('{'.$foundExpression.'}', $var, $str);
}
foreach($strs as $currentStr) {
if(preg_match("~\{([^{}]+)\}~siU", $currentStr, $m)) {
getVariants($currentStr);
} else {
$finishStrs[] = $currentStr;
}
}
} else {
$finishStrs = $str;
}
}
print_r($finishStrs);