[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подсветка кода наоборот
Dyec
Всем привет!
Возникла такая проблема, например кода в сообщении пишу [соdе]РНР КОД[/соdе] , то подсветка кода работает норма. Но когда жму Редактировать сообщение, то вместо [соdе]РНР код[/соdе] вылетает html коды типа <fоnt соlоr="">текст</fоnt> и т.д.
Решил покапаться в этох функции и нашел этот код:
$str = preg_replace_callback('#\[code\](.*?)\[/code\]#siu' , 'highlight_str', $str);

где highlight_str это функция преобразования подсветки.
Пробывал в обратном так:
$str = preg_replace('#highlight_str#su' , '[code]\1[/code]', $str);

и так:
$str = preg_replace('#((highlight_str).*?)#su' , '[code]\1[/code]', $str);

и так:
$str = preg_replace('#(highlight_str.*?)#su' , '[code]\1[/code]', $str);


как только не пробывал, и не работает.
Смайлы и вв-коды норма, а рhр код не пашет в обратном порядке.
Пожалуйста помогите. В гугле искал такую тему, но не нашел.



Спустя 1 минута, 46 секунд (28.11.2011 - 17:37) Игорь_Vasinsky написал(а):
подставляй в паттерн то значение - которое и есть html теги

Спустя 4 минуты, 28 секунд (28.11.2011 - 17:42) Dуес написал(а):
При редактировании сообщения вот такая шняга:

<font class="code">Код:
<font color="#000000">1</font>   <code><span style="color: #000000"><span style="color: #0000BB"><?php

<font color="#000000">2</font>   </span><span style="color: #007700">echo</span><span style="color: #DD0000">'Тест'</span><span style="color: #007700">;

<font color="#000000">3</font>   </span><span style="color: #0000BB">?></span></span></code></font>

Спустя 2 минуты, 12 секунд (28.11.2011 - 17:44) Dуес написал(а):
А должно быть так:
[соdе]<?рhр
eсhо'Тест';
?>
[/соdе]

Как это осуществить?

Спустя 1 день, 23 часа, 10 минут, 5 секунд (30.11.2011 - 16:54) Dуес написал(а):
Тишина.sad.gif

Спустя 39 минут, 59 секунд (30.11.2011 - 17:34) Invis1ble написал(а):
Dуес
Цитата
Как это осуществить?

обратным преобразованием из html в bb

Спустя 26 минут, 48 секунд (30.11.2011 - 18:01) Guest написал(а):
Вы в базу не должны записывать преобразованные данные. Храниться все должно так: [bb]текст[/bb]. А уже непосредственно при выводе на экран, если это не форма, преобразовываете. Каждый раз. В случае с формой, просто подставляете то, что лежит в базе. И все будет ок.

Спустя 3 часа, 19 минут, 4 секунды (30.11.2011 - 21:20) Dуес написал(а):
Здесь не ВВ коды, а подсветка рhр кода, и тут сложнее.

Спустя 12 минут, 49 секунд (30.11.2011 - 21:33) Игорь_Vasinsky написал(а):
а какая разница?

Спустя 4 минуты, 15 секунд (30.11.2011 - 21:37) Игорь_Vasinsky написал(а):
юзер пишет так

[ b ]текст[ /b ]

В БД ты пишешь так (str_replace или preg_replace)

<span class="bb_b">текст</span>

вытаскивая на страничку - оставляешь в таком виде

а если обратно в textarea то

preg_replace("#(<span class=\"bb_b\">.*</span>)#iusU", "[ b ]\\1[ /b ]", $text)


в паттерне может накасарезил, но смысл такой

и на классы обрати внимание - так ты не спутаешься

Спустя 42 минуты, 28 секунд (30.11.2011 - 22:19) Invis1ble написал(а):
Dуес
Guest правильно сказал - храни в БД непреобразованные bb-теги.

Спустя 34 минуты, 54 секунды (30.11.2011 - 22:54) Winston написал(а):
Guest, Invis1ble верно говорят, в БД нужно писать не преобразованные теги, а на выходе преобразовывать, а если в базу сразу писать преобразованные... вы же потом геммора не оберетесь.

Спустя 15 минут, 30 секунд (30.11.2011 - 23:10) Игорь_Vasinsky написал(а):
т.е. каждый раз выводя сообщения нужно производить замену bb тегов на html теги

на за то если юзер захочет один раз в год отредактировать свой пост - вуаля - из бд прямо в форму

biggrin.gif biggrin.gif biggrin.gif biggrin.gif

Спустя 4 минуты, 32 секунды (30.11.2011 - 23:14) inpost написал(а):
Ты должен знать, как подсветка устроена.
Что тут сложного, есть у тебя <span class="light">Text</span> , тебе надо через регулярку как раз передавать этот спан, текст и закрытие спана <span>(.*)</span> - вот такой вид примерно, а возвращать только //1, что в скобках. Хотя это уже выше сказали.
И как дополнение, подсветка нужна ТОЛЬКО в том случае, если человек пользуется поиском, и именно в этот момент НАЙДЕННОЕ слово подсвечивать на странице, вот что значит подсветка, а ты неправильно её понимаешь в принципе.

Спустя 11 часов, 20 минут, 51 секунда (1.12.2011 - 10:35) Dуес написал(а):
Двиг на файлах. Надо чтоб вся подсветка в обратном была.

Спустя 10 дней, 6 часов, 45 минут, 39 секунд (11.12.2011 - 17:21) Гость написал(а):
Тишина
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.