Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подсветка кода
 
 автор: Dmitry1988   (29.06.2010 в 11:43)   письмо автору
 
 

Здравствуйте,
подскажите пожалуйстa в чем может быть проблема.
Я ввожу текст в форме, сохраняю его в БД, вывожу и пытаюсь выписать, используя в тексте функцию highlight_string, но мне выводиться просто черный текст и кусок кода

$post = htmlspecialchars($result['post']);
$post = str_replace($bb,$tag,$post);
echo $post;

но если я просто скопирую этот текст в echo, то он выводит подсвеченный код, например

echo 'Добрый день
'.highlight_string('
$name = 'Dima';
if($name != 'Dima')
echo 'Not';
else
echo 'Yes';
').'
доброй ночи;

в чем проблема подскажите пожалуйсто. Заранее большое спасибо!

  Ответить  
 
 автор: neadekvat   (29.06.2010 в 11:45)   письмо автору
 
   для: Dmitry1988   (29.06.2010 в 11:43)
 

Что-то я не увидел, где вы в первом случаи обращаетесь к функции highlight_string?

  Ответить  
 
 автор: Dmitry1988   (29.06.2010 в 12:48)   письмо автору
 
   для: neadekvat   (29.06.2010 в 11:45)
 

извиняюсь не уточнил. в первом примере переменная post в себе содержит текст из БД, тотже самый как я указал во втором примере

  Ответить  
 
 автор: Trianon   (29.06.2010 в 11:49)   письмо автору
 
   для: Dmitry1988   (29.06.2010 в 11:43)
 

что значит "используя в тексте" ?

  Ответить  
 
 автор: Dmitry1988   (29.06.2010 в 12:49)   письмо автору
 
   для: Trianon   (29.06.2010 в 11:49)
 

это как во втором случае, тотже текст, только в первом случае он сохранен в БД и выведен на экран в переменной $post

  Ответить  
 
 автор: Гавриленко Дмитрий   (29.06.2010 в 13:26)   письмо автору
 
   для: Dmitry1988   (29.06.2010 в 11:43)
 

highlight_string($post)
попробуй гг

  Ответить  
 
 автор: Dmitry1988   (29.06.2010 в 13:33)   письмо автору
 
   для: Гавриленко Дмитрий   (29.06.2010 в 13:26)
 

нене так он выведет и весь текст подсвеченный а мне нужно только кусок кода...

  Ответить  
 
 автор: Гавриленко Дмитрий   (29.06.2010 в 13:43)   письмо автору
 
   для: Dmitry1988   (29.06.2010 в 13:33)
 

регулярными выражениями ищи где код начинается и где заканчивается. Потом подставляй свою функцию и все

  Ответить  
 
 автор: Dmitry1988   (29.06.2010 в 14:05)   письмо автору
 
   для: Гавриленко Дмитрий   (29.06.2010 в 13:43)
 

а регулярное выражение найдет все совпадения или только первое? Если например в тексте у меня будет (текст-код-текст-код-текст).

Не знаете почему всетаки так получается, что если просто скопировать текст в echo''; то он подсвечивает только ту часть, которая находиться в функции highlight_string а если передать этотже текст через переменную, то он вообще не воспринимает эту функцию?

  Ответить  
 
 автор: neadekvat   (29.06.2010 в 14:30)   письмо автору
 
   для: Dmitry1988   (29.06.2010 в 14:05)
 

А вам не кажется логичным в тексте выделять код в какой-нибудь bb-код и только то, что находится в этом бб-коде подсвечивать, как это делается здесь.

<?php echo 'Без тэга code не подсвечивает'; ?>

<?php echo 'С тэгом code подсвечивает'?>

  Ответить  
 
 автор: Dmitry1988   (29.06.2010 в 15:32)   письмо автору
 
   для: neadekvat   (29.06.2010 в 14:30)
 

проюовал бб-код [CODE][/CODE] и заменял ее на <code></code>, но он опятьже выводил не подсвеченный код..

  Ответить  
 
 автор: neadekvat   (29.06.2010 в 17:03)   письмо автору
 
   для: Dmitry1988   (29.06.2010 в 15:32)
 

Смеетесь? Надо использовать бб-код при вводе сообщения, а при выводе надо парсить текст, находящийся в этом бб-коде и пропускать его через функцию.

  Ответить  
 
 автор: Dmitry1988   (29.06.2010 в 17:14)   письмо автору
 
   для: neadekvat   (29.06.2010 в 17:03)
 

Да это понятно, гдеж еще его использавать:) логику как это делать я уже понял, теперь думаю над тем как пропустить текст, который находится в бб-коде через функцию.

  Ответить  
 
 автор: neadekvat   (29.06.2010 в 17:54)   письмо автору
 
   для: Dmitry1988   (29.06.2010 в 17:14)
 

preg_replace_callback()

  Ответить  
 
 автор: Dmitry1988   (29.06.2010 в 21:54)   письмо автору
 
   для: neadekvat   (29.06.2010 в 17:54)
 

спасибо большое, не могли бы Вы мне еще помочь с регулярным выражением ничего у меня не получается...(
Извините если пишу не в том форуме, просто тема тут, не хотел создавать новую

  Ответить  
 
 автор: neadekvat   (29.06.2010 в 22:24)   письмо автору
 
   для: Dmitry1988   (29.06.2010 в 21:54)
 

Воспользуйтесь поиском по форуму рег.выражений. Там не раз поднимались темы бб-кодов.

  Ответить  
 
 автор: Dmitry1988   (29.06.2010 в 23:45)   письмо автору
 
   для: neadekvat   (29.06.2010 в 22:24)
 

Нашел коекакие коды, постараюсь подстроить под себя. Хотел еще спросить т.к. раньше с бб-кодами я ничего не делал, вот смотрю все их делают с помощью рег. выражений, но я их сделал с помощью 2-ух массивов $bb и $tag где ($bb это массив бб-кодов а $tag массив тагов) и с помощью функции str_replace я их заменяю в тексте. Правильно ли это или лучше переделать с помощью рег. выражений?

  Ответить  
 
 автор: neadekvat   (30.06.2010 в 00:36)   письмо автору
 
   для: Dmitry1988   (29.06.2010 в 23:45)
 

1. Скорее всего, работает ваш код некорректно (см п.3)
2. Если даже работает так, как надо, то там куча ненужных действий ака г..код
3. Вы решили сделать так просто потому, что не знакомы с рег.выражениями, а значит, у вас еще мало знаний и опыта (последнее является причиной п.1)

А лучше таки покажите свой код.

  Ответить  
 
 автор: Trianon   (30.06.2010 в 00:37)   письмо автору
 
   для: neadekvat   (30.06.2010 в 00:36)
 

нету там ничего своего.

  Ответить  
 
 автор: neadekvat   (30.06.2010 в 00:50)   письмо автору
 
   для: Trianon   (30.06.2010 в 00:37)
 

Ок, "ваш код" можно убрать.

  Ответить  
 
 автор: Dmitry1988   (30.06.2010 в 01:12)   письмо автору
 
   для: neadekvat   (30.06.2010 в 00:50)
 

Да вы правы с регулярными выражениями я еще не разобрался...
Вот код:

<?php
$bb 
= array("[CODE]","[/CODE]","[QUOTE]","[/QUOTE]","[COLOR=red]","[/COLOR]","",""
,"","","[U]","[/U]","","");
$tag = array("<blockquote style='border: 1px solid #4D6D91; background: #F4F4F4;'><code>","</code></blockquote>","<blockquote style='border: 1px solid #4D6D91; background: #F4F4F4;'>","</blockquote>","<font color=red>","</font>","<b>","</b>","<i>","</i>","<u>","</u>","<s>","</s>");

//$result['post'] - текст из ДБ
$post htmlspecialchars(stripslashes($result['post']));
echo 
str_replace($bb,$tag,$post);
?>

  Ответить  
 
 автор: Dmitry1988   (30.06.2010 в 12:16)   письмо автору
 
   для: neadekvat   (30.06.2010 в 00:50)
 

У меня все получилось, сделать все как было написану в этой теме http://softtime.ru/forum/read.php?id_forum=6&id_theme=42454
Спасибо большое за ответы.

  Ответить  
 
 автор: Dmitry1988   (30.06.2010 в 01:14)   письмо автору
 
   для: Trianon   (30.06.2010 в 00:37)
 

Нет Вы не правы ВЕСЬ код который я пишу, я пишу сам, только то, что я не знаю я ищу в интернете и на форумах. Я ничего просто так бездумно не копирую!

  Ответить  
 
 автор: Trianon   (30.06.2010 в 02:08)   письмо автору
 
   для: Dmitry1988   (30.06.2010 в 01:14)
 

Я был бы сильно рад, окажись неправым.

Но в таком разе объяснить, как можно перепутать название функции, стоящее одним из операндов выражения и название функции как часть текста литеральной строки языка, я решительно не берусь

  Ответить  
 
 автор: Dmitry1988   (30.06.2010 в 09:46)   письмо автору
 
   для: Trianon   (30.06.2010 в 02:08)
 

Да признаюсь, писал я полную ерунду я это уже понял, но писал все таки я сам, т.к. такой бред врятли найдется в интернете.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования