Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1 2

Создаем ВВ коды

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#11
хм. т.е. впихнуть в файл на показе реплайсы? спс. а как запилить, к примеру тег, что бы внутри него теги не заменялись?

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#12
Как вариант вырезать такие теги с их содержимым заменяя на какойто код а в конце всех замен заменять этот код обратно на тег с его содержимым:)

Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#13
Цитата
Как вариант вырезать такие теги с их содержимым заменяя на какойто код а в конце всех замен заменять этот код обратно на тег с его содержимым [smile]

Не понял)))

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#14
например есть такой текст
фывфывфыв[*b]asdasdasd[a]sdasd[/a]sdasdas[*/b]фывфывфыв
и ты не хочешь чтобы в теге b что то менялось. Тогда ты его вырезаешь и ставишь вместо него хешь
фывфывфыв{HASH_DH1FJDH74DJS84}фывфывфыв
Потом парсишь все что нужно и в конце опять заменяешь хешь на текст который был вырезан
фывфывфыв[*b]asdasdasd[a]sdasd[/a]sdasdas[*/b]фывфывфыв

Отредактировано автором 23 Ноя 2010
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

skad0

  • Атом-мозг
  • Юзер
  • 841
  • Репутация:10 
  • Предупреждения: 0 
  • Регистрация:
    2 Окт 2010
#15
суть ясна, но не ясно как это работает)

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#16
а что тут не ясного. Внутри временно вырезаного блока ничего не может замениться, ведь когда ты производишь замену он вырезан))) и заменен на какой то код, который потом ты точно сможешь узнать, что бы поставить этот фрагмент обратно:)

Добавлено 2010.11.30 14-38

Допустим есть строка я страшная строка с [*code]страшным [*b] текстом[*/b] и страшными[*/code] бб кодами

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
<?php //находим все совпадения с нужным тегом
preg_match_all('#\[code\](.*)\[\/code\]#smi'$str$match));
$count count($match[1]);
$codeBox = array();
$codeUni = array();
//проходим по всем совпадениям. переменная $match содержит массив совпадений
for ($i 0$i $count$i++){
       
//заменяем тег code на то что нужно, например див
       
$codeBox[$i] = '<div>' htmlspecialchars($match[1][$i]) . '</div>';
       
//создаем уникальный ключ для данного совпадения
       
$codeUni[$i] = 'code_' md5(rand() . rand());
      
//заменяем совпадение ключом
       
$str str_replace($match[0][$i], $codeUni[$i], $str);
}
?>

Теперь у нас есть массив с ключами и еще один массив со строками соответствующими этим ключам. Ну и конечно у нас есть сама строка(основная) с которой можно делать че угодно не опасаясь повредить то что в тегах CODE ведь они вырезаны. Делаем со строкой че угодно..

 1 
 2 
<?php $str = ......
$str = ......?>

А потом ставим на место наши строки которые были обрамлены в CODE
 1 
 2 
 3 
<?php //str_replace может принимать в первых 2х параметрах и массивы а так как у нас коды и 
//строки в этих массивах соответствуют то мы воспользуемся этим не опасаясь путаницы
$str str_replace($codeUni$codeBox$str);?>

Таким образом сам тег CODE заменился а вписаные в него теги нет.

Отредактировано автором 30 Ноя 2010
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)
1 2
Сейчас online: 14. Зарегистрированных: 0. Гостей: 14.