Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Подсветка кода используя preg_replace
Форумы портала PHP.SU » » Вопросы новичков » Подсветка кода используя preg_replace

Страниц (1): [1]
 

1. -=1100=- - 20 Июня, 2012 - 08:12:15 - перейти к сообщению
Доброе утро.

Есть ли возможно реализовать что-то вроде этого:
PHP:
скопировать код в буфер обмена
  1.  
  2. $txt="Тут я пишу много текста. Потом идет <?PHP echo('test'); ?> и возможно опять много текста";
  3. preg_replace("!<\?php(.*?)\?>!si",highlight_string("\\1"),$str);
  4.  
  5.  


ну и что бы этот код php в итоге был подсвечен.

А то у меня не как не получается.
2. fdr21 - 20 Июня, 2012 - 08:56:45 - перейти к сообщению
-=1100=- пишет:
Доброе утро.

Есть ли возможно реализовать что-то вроде этого:
PHP:
скопировать код в буфер обмена
  1.  
  2. $txt="Тут я пишу много текста. Потом идет <?PHP echo('test'); ?> и возможно опять много текста";
  3. preg_replace("!<\?php(.*?)\?>!si",highlight_string("\\1"),$str);
  4.  
  5.  


ну и что бы этот код php в итоге был подсвечен.

А то у меня не как не получается.


можете просто использовать:
highlight_string($txt)
код PHP подсвечивается!
3. -=1100=- - 20 Июня, 2012 - 09:07:52 - перейти к сообщению
Неее так не пойдет.
Я забыл упомянуть что текст который перед и после php кода заключен в теги.
4. Мелкий - 20 Июня, 2012 - 09:15:39 - перейти к сообщению
В общем же случае - preg_replace_callback
5. fdr21 - 20 Июня, 2012 - 09:29:39 - перейти к сообщению
Тогда нужно исправить ошибки!
так вроде бы работает
PHP:
скопировать код в буфер обмена
  1.  
  2. $txt= "Тут я пишу много текста. Потом идет <?PHP echo('test'); ?> и возможно опять много текста";
  3. // Наша готовая строка
  4. $pods_stroka =  preg_replace('#(<\?php.*?\?>)#ie', "highlight_string('$1', 'true')",$txt);
  5. // если нужно можно вывести результат!
  6. echo $pods_stroka;
6. -=1100=- - 21 Июня, 2012 - 08:56:52 - перейти к сообщению
Цитата:

Тогда нужно исправить ошибки!
так вроде бы работает


А у меня не работает. Текст отображает, а php код вообще не как.

Даже после полного копирования примера.
7. DlTA - 21 Июня, 2012 - 09:12:13 - перейти к сообщению
все работает
PHP:
скопировать код в буфер обмена
  1. echo highlight_string('<b>123</b> <?=$a="текст"."другой текст"?>');
8. -=1100=- - 21 Июня, 2012 - 09:21:46 - перейти к сообщению
Так то и у меня работает.
Цитата:
echo highlight_string('<b>123</b> <?=$a="текст"."другой текст"?>');


Я про

Цитата:

$txt= "Тут я пишу много текста. Потом идет <?PHP echo('test'); ?> и возможно опять много текста";
// Наша готовая строка
$pods_stroka = preg_replace('#(<\?php.*?\?>)#e', "highlight_string('$1', 'true')",$txt);
// если нужно можно вывести результат!
echo $pods_stroka;


У меня выдает просто
Цитата:
Тут я пишу много текста. Потом идет и возможно опять много текста
9. DlTA - 21 Июня, 2012 - 09:23:43 - перейти к сообщению
а нафига такие сложности?
10. -=1100=- - 21 Июня, 2012 - 09:43:24 - перейти к сообщению
DlTA пишет:
а нафига такие сложности?



Есть файлы с примерной структурой содержания:

<h1>Заголовок</h1>
<p>Текст</p>
<ul>
<li>Списки</li>
</ul>
<?php echo("php код разного размера");>
<p>И еще некий текст</p>

Функция file_get_contents() читает этот файл и отображает его содержимое через функцию htmlspecialchars_decode(). В итоге, в идеале, получается отформатированный текст с подсветкой php кода.
11. просто даня - 21 Июня, 2012 - 10:51:53 - перейти к сообщению
если взять код из файла то так:

и будет тебе весь файл с подсветкой показывать в том месте хде это написано!
12. fdr21 - 21 Июня, 2012 - 11:00:20 - перейти к сообщению
Цитата:
А у меня не работает. Текст отображает, а php код вообще не как.

$txt= "Тут я пишу много текста. Потом идет <?PHP echo('test'); ?> и возможно опять много текста";

при формате на форуме <php echo('test'); ?> стал <PHP - стал ЗАГЛАВНЫМИ буквами. У меня, так тоже не сработало)))
измените на <php должно работать!!!
13. -=1100=- - 21 Июня, 2012 - 11:34:40 - перейти к сообщению
fdr21 Спасибо!

Можно конечно и в файл отдельный, но это не удобно когда код 5-7 строчек.
Всем огромное спасибо.

 

Powered by ExBB FM 1.0 RC1