| |
|
|
| | у меня почему то не работает собственная функция подсветки пхп кода. пишет чото там с функцией прег реплайс.подскажите плз :-) заранее спасибо | |
| |
|
|
| |
|
|
| |
для: winflip
(19.07.2007 в 09:41)
| | | Вы бы еще код показыли :))
Хотя бы этот прег_реплайс + по строчке вверх, вниз. | |
| |
|
|
| |
|
|
| |
для: winflip
(19.07.2007 в 09:41)
| | | Приведите пожалуйста точное сообщение. | |
| |
|
|
| |
|
|
| |
для: cheops
(19.07.2007 в 10:13)
| | | <?php
function shighlight($document)
{
$document = str_replace("<", "<", $document);
$document = str_replace(">", ">", $document);
$tegs = array("'<\?php'si", "'<\?'si", "'\?>'si");
$replace = array("<font color=#95001E><?php</font>",
"<font color=#95001E><?</font>",
"<font color=#95001E>?></font>");
$document = preg_replace($tegs, $replace, $document);\\Здесь ошибка
$document = preg_replace("'((?:#|//)[^\n]*|\/*.*?\*/)'si",
"<font color=#244ECC>\\1</font>",
$document);
$document = preg_replace("'(\n)'si","<br>\\1", $document);
$document = preg_replace("'([\w]+)([\s]*)[\(]'si",
"<font color=#0000CC><b>\\1</b></font>\\2(",
$document);
$separator = array("'\,'si",
"'\-'si",
"'\+'si",
"'\('si",
"'\)'si",
"'\{'si",
"'\}'si");
$replace = array("<font color=#1A691A>,</font>",
"<font color=#1A691A>-</font>",
"<font color=#1A691A>+</font>",
"<font color=#1A691A>(</font>",
"<font color=#1A691A>)</font>",
"<font color=#1A691A>{</font>",
"<font color=#1A691A>}</font>");
$document = preg_replace($separator, $replace, $document);
$document = preg_replace("'([\$]{1,2}[A-Za-z_]+)'si",
"<b><font color=#000000>\\1</font></b>",
$document);
$str = array("'(echo)'si",
"'(print)'si",
"'(while)'si",
"'(for)'si",
"'(if)'si",
"'(else)'si",
"'(switch)'si",
"'(function)'si",
"'(array)'si");
$replace = array_fill(0,
count($str),
"<b><font color=#0000CC>\\1</font></b>");
$document = preg_replace($str, $replace, $document);
return "<code>$document</code>";
}
?> | |
| |
|
|
| |
|
|
| |
для: cheops
(19.07.2007 в 10:13)
| | |
<?php
function shighlight($document)
{
$document = str_replace("<", "<", $document);
$document = str_replace(">", ">", $document);
$tegs = array("'<\?php'si", "'<\?'si", "'\?>'si");
$replace = array("<font color=#95001E><?php</font>",
"<font color=#95001E><?</font>",
"<font color=#95001E>?></font>");
$document = preg_replace($tegs, $replace, $document);\\Здесь ошибка
$document = preg_replace("'((?:#|//)[^\n]*|\/*.*?\*/)'si",
"<font color=#244ECC>\\1</font>",
$document);
$document = preg_replace("'(\n)'si","<br>\\1", $document);
$document = preg_replace("'([\w]+)([\s]*)[\(]'si",
"<font color=#0000CC><b>\\1</b></font>\\2(",
$document);
$separator = array("'\,'si",
"'\-'si",
"'\+'si",
"'\('si",
"'\)'si",
"'\{'si",
"'\}'si");
$replace = array("<font color=#1A691A>,</font>",
"<font color=#1A691A>-</font>",
"<font color=#1A691A>+</font>",
"<font color=#1A691A>(</font>",
"<font color=#1A691A>)</font>",
"<font color=#1A691A>{</font>",
"<font color=#1A691A>}</font>");
$document = preg_replace($separator, $replace, $document);
$document = preg_replace("'([\$]{1,2}[A-Za-z_]+)'si",
"<b><font color=#000000>\\1</font></b>",
$document);
$str = array("'(echo)'si",
"'(print)'si",
"'(while)'si",
"'(for)'si",
"'(if)'si",
"'(else)'si",
"'(switch)'si",
"'(function)'si",
"'(array)'si");
$replace = array_fill(0,
count($str),
"<b><font color=#0000CC>\\1</font></b>");
$document = preg_replace($str, $replace, $document);
return "<code>$document</code>";
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: winflip
(19.07.2007 в 10:55)
| | | Мммм.... если убрать слова "Здесь ошибка" - все работает :rolleyes:
Какая у Вас ошибка выводится? | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(19.07.2007 в 11:48)
| | | если присвоить переменной документ код пхп то он не выводится | |
| |
|
|
| |
|
|
| |
для: winflip
(19.07.2007 в 12:01)
| | | Вот так надо пользоваться:
<?php
. . . . .
$document = '<?php echo "bla bla bla"; ?>';
echo shighlight($document);
|
Переменную не обязательно обзывать $document - почитайте про функции и область видимости переменных.
зыж не понятно только, как такой скрипт мог попасть в книги (тоже самое и в "головоломках"), если он некорректно обрабатывает даже '<?php echo "bla bla bla"; ?>' ? Кабута даже не проверили :))
http://softtime.ru/forum/read.php?id_forum=1&id_theme=6140
автор: cheops (09.08.2005 в 01:35) :-) | |
| |
|
|
| |
|
|
| |
для: kasmanaft
(19.07.2007 в 12:52)
| | | а я ретурном выводил. спасибо | |
| |
|
|
| |
|
|
| |
для: winflip
(19.07.2007 в 13:04)
| | | только он чото выводит еще #95001е | |
| |
|
|
| |
|
|
| |
для: winflip
(19.07.2007 в 13:07)
| | | космонавт не подскажешь | |
| |
|
|
| |
|
|
| |
для: winflip
(19.07.2007 в 17:43)
| | | Так происходит вот почему:
Сначала "<?php" преобразуется в "<php". Замем оно подсвечивается
<font color=#95001E><?php</font>
После этого закрашиваются коментарии (однострочные "//" и "#" и многострочные "/* ... */")
Считается что все, что начинается с "#" - коментарий. Смотрим чуть выше... "<font color=#95001E>" - скрипт думает, что тут тоже содержется коментарий.
Можно поменять строки местами и все будет нормально:
$document = preg_replace("'((?:#|//)[^\n]*|\/\*.*?\*/)'si",
"<font color=#244ECC>\\1</font>",
$document);
$document = preg_replace($tegs, $replace, $document);
|
Всё же это демонстрационный скрипт.. для книги... Много мелочей нужно учитывать, что сделать очень не просто. | |
| |
|
|
|