|
|
|
|
|
для: Artem S.
(17.11.2005 в 10:19)
| | Хорошо, спасибо. Если в принципе регами не сделать (по заключению экспертов) :), то напишу обычную функцию! Thx! | |
|
|
|
|
|
|
|
для: MOVe
(17.11.2005 в 09:37)
| | >> Ещё одна задача... Как выбрать текст по границам тэгов? Но не трогать всё внутри?
Регами тут я ничего сделать не могу. Можно прибегнуть к рекрусии, но тогда между тегами ничего не доложно быть ([ b ][ i ][ code ]111[ /code ][ /i ][ /b ] так а не так [ b][ i ] 123 [ code ]111[ /code ][ /i ][ /b]
Спасти могут строковые функции. Ищем вложения [ b ] [ i ] [ code ] через strpos что раньше встречается min() и меняем по регвыражению что выше.
Со списками помогу, но чуть позже, я занят очень, на выходных. | |
|
|
|
|
|
|
|
для: cheops
(15.11.2005 в 13:45)
| | А со списками мне никто не поможет :cry:? | |
|
|
|
|
|
|
|
для: MOVe
(15.11.2005 в 11:46)
| | Скорее всего разумнее разбить текст на части по границам тэгов - произвести замену внутри и объединить результаты. | |
|
|
|
|
|
|
|
для: MOVe
(15.11.2005 в 01:26)
| | Ещё одна задача... Как выбрать текст по границам тэгов? Но не трогать всё внутри?
[codee]
bold
[codee]
hello
[/codee]
[/codee]
[codee]
code tag 2
[/codee]
|
чтобы это превратилось в:
<div>
[ b ] bold [ /b ]
[codee]
hello
[/codee]
</div>
<div>
code tag 2
</div>
|
В смысле, мне не нужно обработку внутренностей, мне нужно узнать, как мне вытащить тэги code только те, которые являются внешними... | |
|
|
|
|
|
|
|
для: Artem S.
(15.11.2005 в 01:17)
| | Пользователю сложнее запомнить, что нужно ставить звёздочки... Лучше всё же без них. Если конечно код не усложнится... Лучше проверку по \n сделать, чем по [*]. Если не трудно :) Спасибо! | |
|
|
|
|
|
|
|
для: MOVe
(15.11.2005 в 01:10)
| | Ну на сколько мне не изменяет память bbcode'ы нужно писать так
[list]
[*] запись 1
[*] запись 2
и т.д.
[list]
[*] запись 3
[*] запись 4[/list]
[/list]
Может лучше выбрать этот вариант? | |
|
|
|
|
|
|
|
для: MOVe
(15.11.2005 в 01:01)
| | Боюсь показаться наглым, но всё же :)
Как вы поняли у меня задача сделать поддержку BBcodes на сайте. Есть какие-то более менее простые, но вот некоторые совсем не даются.
Очередной "затык" на списках...
Вот код:
[list]
запись 1
запись 2
и т.д.
[list]запись 3
запись 4[/list]
[/list]
|
Как обработать так, чтобы это всё превратилось в:
<ul>
<li>запись 1</li>
<li>запись 2</li>
<li>и т.д.</li>
<ul>
<li>запись 3</li>
<li>запись 4</li>
</ul>
</ul>
|
Сейчас ещё раз по форуму пройдусь, может уже есть такой ответ...
Заранее спасибо!
Да, при помощи обычного скрипта я это делаю детскими методами... А вот регекспами так же не понимаю... | |
|
|
|
|
|
|
|
для: Artem S.
(15.11.2005 в 00:49)
| | Мдаааа... Круто :) Спасибо! Пока не асилил, но буду разбираться.
Куплю немножечко мозгофф... Приоритетно - с пониманием регекспов :) | |
|
|
|
|
|
|
|
для: MOVe
(15.11.2005 в 00:03)
| | Вот! Новый шаблон. В чем разница можете посмотреть на примере.
<?
$parrent_new= "#\[quote\]((?:(?<!\[/quote\]).(?!\[quote\]))+)\[/quote\]#is";
$parrent_old = "#\[quote(=\"[a-z]+\")?\](?!\[quote])(?<!\[/quote\])(.*?)\[/quote\]#si";
$str1 =
'[quote]
цитата
[quote] вложенная цитата[/quote]
[quote]
цитата вложенная в цитату
[quote] 3 уровень вложености [/quote]
[/quote]
[/quote]';
$str2 = $str1;
$i = 1;
while ( preg_match($parrent_old, $str1) )
{
$str1 = preg_replace($parrent_old, "<div in=$i>\n$1\n</div end=$i>", $str1);
$i++;
}
$i = 1;
while ( preg_match($parrent_new, $str2) )
{
$str2 = preg_replace($parrent_new, "<div in=$i>\n$1\n</div end=$i>", $str2);
$i++;
}
echo "Вариант 1:\n", $str1;
echo "\n\n";
echo "Вариант 2:\n", $str2;
?>
|
Вариант 1:
<div in=1>
</div end=1>
<div in=1>
</div end=1>
[/quote]
[/quote]
Вариант 2:
<div in=3>
цитата
<div in=1>
вложенная цитата
</div end=1>
<div in=2>
цитата вложенная в цитату
<div in=1>
3 уровень вложености
</div end=1>
</div end=2>
</div end=3>
|
Пользуйтесь =) | |
|
|
|
|