угу)
понаставил что сам путаюсь.
пытаюсь сделать какую нибудь гибкость.
Цитата:
"Они как переменные считаются и результат заносится в массив."
дык это мне и нужно
Morgan, еще по результатам видно что считывается первый {if...} и первый {/if} чтобы не парится можно так сделать
{if $a}
{/if $a}
хе, я пытался.
но он не хочет принимать ни в какую.
сейчас дам пример.
$content = '{if $a}
{if $b}
{/if $b}
{/if $a}';
preg_match_all('~\{if ((\!)?(\~)?\$((.*)(\.(.*))?)( (.*) ([0-9]+|\$((.*)(\.(.*))?)))?)\}(?:\r\n|\n)?(.*)(?:\r\n|\n)?\{\/if \\1\}~uUs', $content, $ifs);
print_r($ifs);
===>>>
Array
(
[0] => Array
(
[0] => {if $a}
{if $b}
{/if $b}
{/if $a}
)
[1] => Array
(
[0] => $a
)
[2] => Array
(
[0] =>
)
[3] => Array
(
[0] =>
)
[4] => Array
(
[0] => a
)
[5] => Array
(
[0] => a
)
[6] => Array
(
[0] =>
)
[7] => Array
(
[0] =>
)
[8] => Array
(
[0] =>
)
[9] => Array
(
[0] =>
)
[10] => Array
(
[0] =>
)
[11] => Array
(
[0] =>
)
[12] => Array
(
[0] =>
)
[13] => Array
(
[0] =>
)
[14] => Array
(
[0] =>
)
[15] => Array
(
[0] =>
{if $b}
{/if $b}
)
)
то есть, первое вхождение айдено а второе нет
Morgan, внимательно присмотрись какая у тебя первая переменная там третью или четвертую нужно, и перед \\1 знак долара поставь
03 Авг 2010, 20:02Morgan, найдено то и первое и второе, только второе вконце. А ты разделить не хочешь, сначала парсишь на блоки if, а потом то что внутри блока.
03 Авг 2010, 20:26решено с помощью создания функции для рекурсивного прохода по всем таким вложенностям.
03 Авг 2010, 22:02Подскажите, как сделать проверку ввода ника. А именно, в нике могут содержаться рус и англ буквы, цифры, знаки - _ Ник может содержать пробелы, например "n ik" или "n i k" но не " nik". Ну и не должен быть пустым или состоять из пробелов.
25 Ноя 2010, 22:32Sandr,
$nick = trim(preg_replace('/[^a-zA-Zа-яА-Я0-9_\-\040]/', '', $_POST['nick']));
if (empty($nick)) die('error');
как-то так