Forum Webscript.Ru

Программирование => PHP => Тема начата: Alan от 11 Января 2002, 14:43:49

Название: Кусочек кода.
Отправлено: Alan от 11 Января 2002, 14:43:49
Понимаю задрал уже, но честно я искал и не нашел.
Кто может выдряпать кусочек кода из этого форума. который проделывает разметку кода после слов [.php.] и [/php.]
точки поставил только для того чтоб на перевело.
Название: Кусочек кода.
Отправлено: Tankist от 12 Января 2002, 22:32:19
Спроси у NAS\'а
Название: Кусочек кода.
Отправлено: NAS от 12 Января 2002, 22:42:19
Cм. functions.php

функции
bbcodeparse
bbcodeparse2
Название: Кусочек кода.
Отправлено: ThE0ReTiC от 14 Января 2002, 22:51:06
У меня заработала таккая штука:

$code[0] = \'[php]\';
$code[1] = \'\';

$pos[0] = strpos($stream,$code[0]);
$pos[1] = strpos($stream,$code[1]);
$block[0] = substr($stream,0,$pos[0]);
$block[1] = substr($stream,$pos[1]+strlen($code[1]),strlen($stream)-$pos[1]);
echo(strip_tags($block[0])."

");

$hs = substr($stream,$pos[0]+strlen($code[0]),$pos[1]-$pos[0]-strlen($code[1]));
$stream = eregi_replace(\'\\[php\\]\',\'\',$hs);
$stream = eregi_replace(\'\\[/php\\]\',\'\',$hs);
$hs = stripslashes($hs);

@highlight_string($hs);

echo("

".strip_tags($block[1]));

?>

[/php]
Единственный недостаток - подсвечивает только первый кусок кода. Ну с этим, я думаю, ты справишся :)
Название: Кусочек кода.
Отправлено: Alan от 15 Января 2002, 01:37:01
Цитировать
Cм. functions.php

Где смотри? Если в форуме, так нет уменя исходников... ;(
Я ж потому и спросил, что нету... =(
Цитировать
У меня заработала таккая штука:

Может так:
$code[0] = \'[php]\';
$code[1] = \'\';
$pos[0] = strpos($stream,$code[0]);
$pos[1] = strpos($stream,$code[1]);
$block[0] = substr($stream,0,$pos[0]);
$block[1] = substr($stream,$pos[1]+strlen($code[1]),strlen($stream)-$pos[1]);
echo(strip_tags($block[0])."

");
$hs = substr($stream,$pos[0]+strlen($code[0]),$pos[1]-$pos[0]-strlen($code[1]));
$stream = eregi_replace(\'\\[php\\]\',\'\',$hs);
$stream = eregi_replace(\'\\[/php\\]\',\'\',$hs);
$hs = stripslashes($hs);
@highlight_string($hs);
echo("

".strip_tags($block[1]));

?>
Если да, то я не понял, как туда передавать данные. напимер тут всё ясно и понятно =)
$badwords[]="pidar";
 $badwords[]="галимый";
 foreach ($badwords as $badword){
 $msg = str_replace ($badword, "[ Грязный матюк ]", $msg);}

поступает чистый $msg а потом вылазит обделаный $msg
Прошу прощения за возможно глупые вопросы, я кончно ещё помучаюсь с этим кодом, но если не трудно опишите =)
P.S. Скоро меня на форум пускать не будут... хотя тогда зачем он...?
Название: Кусочек кода.
Отправлено: ThE0ReTiC от 15 Января 2002, 12:25:23
Данные передаются из формы. переменная $stream - в данном случае значенние, передаваемое из textarea.
Если кинешь мыло - пришлю пример с формой и подробными комментариями.
Название: Кусочек кода.
Отправлено: Alan от 15 Января 2002, 14:21:51
Цитировать
Если кинешь мыло - пришлю пример с формой и подробными комментариями

spider@vov.ru
Название: Кусочек кода.
Отправлено: ThE0ReTiC от 15 Января 2002, 16:46:45
Услал.
Название: Кусочек кода.
Отправлено: Alan от 15 Января 2002, 17:05:47
слушай может я что-то не так делаю или уменя что-то с настройками, но вставляю
echo "привет";
?>
ничего не выводит, а посмотрел в виде HTML вот что пишет






Название: Кусочек кода.
Отправлено: ThE0ReTiC от 15 Января 2002, 17:08:12
А ты не забыл ограничить код тегами [.php.] и [./php.] типа :

[.php.]
echo "привет";
?>
[./php.]
Название: Кусочек кода.
Отправлено: Alan от 15 Января 2002, 17:13:04
если так

echo "alan";
?>

то получается в html



[<\\?<\\?<\\



[/php]
Название: Кусочек кода.
Отправлено: Alan от 15 Января 2002, 18:54:25
NAS, помоги ты ж работаешь с этим форумом и я думаю знаешь как устроена эта функция
Название: Кусочек кода.
Отправлено: NAS от 15 Января 2002, 19:03:47
Цитировать
NAS, помоги ты ж работаешь с этим форумом и я думаю знаешь как устроена эта функция


Ну откуда я знаю. Я же с форумом работаю, а не программирую его.
Название: Кусочек кода.
Отправлено: Alan от 15 Января 2002, 19:10:19
Цитировать
Услал.

твой вариант не совсем подходит, потому, что если человек напишет так
[.php]
echo "hello";
?>
[//php]
получится вот так:
echo "hello";
?>
?>
Название: Кусочек кода.
Отправлено: Alan от 15 Января 2002, 19:11:58
Цитировать
Ну откуда я знаю. Я же с форумом работаю, а не программирую его.

а посмотреть можешь как работает эта функция?
Название: Кусочек кода.
Отправлено: NAS от 15 Января 2002, 19:16:19
Цитировать
а посмотреть можешь как работает эта функция?


могу


// ###################### Start phphighlite #######################
function phphighlite($code) {
  //PHP 4 only

  if (floor(phpversion())<4) {
    $buffer=$code;
  } else {
$code = str_replace("
", "", $code);
$code = str_replace("
", "", $code);
$code = str_replace(">", ">", $code);
$code = str_replace("<", "<", $code);

$code = str_replace("&", "&", $code);
$code = str_replace(\'$\', \'\\$\', $code);
$code = str_replace(\'\\n\', \'\\\\\\\\n\', $code);
$code = str_replace(\'\\r\', \'\\\\\\\\r\', $code);
$code = str_replace(\'\\t\', \'\\\\\\\\t\', $code);

$code = stripslashes($code);

if (!strpos($code," $code="";
$addedtags=1;
}
ob_start();
$oldlevel=error_reporting(0);
highlight_string($code);
error_reporting($oldlevel);
$buffer = ob_get_contents();
ob_end_clean();
if ($addedtags) {
 $openingpos = strpos($buffer,\'<?\');
 $closingpos = strrpos($buffer, \'?\');
 $buffer=substr($buffer, 0, $openingpos).substr($buffer, $openingpos+5, $closingpos-($openingpos+5)).substr($buffer, $closingpos+5);
}
$buffer = str_replace(""", "\\"", $buffer);
  }

  return "
PHP:
$buffer
";
}

Название: Кусочек кода.
Отправлено: Alan от 15 Января 2002, 20:04:45
не получается, но есть идея как это сделать, сам написать не могу (пока)
Есть текст:
---------------------------8<------------------------
текст текст текст
[-php]
echo "alan";
?>
[-/php]
текст текст текст текст
--------------------------------8<------------------
так вот я думаю надо сначала вырезать текст до [-php] и загнать в переменную (массив например) потом вырезать всё что после [-php] и до [-/php] и при этом удалить [-php] и [-/php] а что останется загнать тоже в переменную, потом вырезать что после [-php] было и тоже в переменную, а потом можно сделать что-то типа этого
echo $b[0]."
";
echo highlight_string ($b[1])."
";
echo $b[3];
Название: Кусочек кода.
Отправлено: NAS от 15 Января 2002, 20:10:15
Кстати в пхп4 подсветка синтаксиса встроенная фича
переименуй любой скрипт в *.phps и посмотри на него в браузере.
Название: Кусочек кода.
Отправлено: Britva от 15 Января 2002, 20:23:04
Плюс еще ф-я show_source("имя_файла") есть.
Название: Кусочек кода.
Отправлено: NAS от 15 Января 2002, 20:34:10
А еще есть
highlight_string -- Syntax highlighting of a string
Description

boolean highlight_string (string str)


The highlight_string() function prints out a syntax highlighted version of str using the colors defined in the built-in syntax highlighter for PHP. It returns true on success, false otherwise (PHP 4).
Название: Кусочек кода.
Отправлено: Alan от 15 Января 2002, 20:46:43
эт я знаю, но я хотел эту фишку использовать для скрипта добавления комментариев к статьям, что-то типа как на пхп.нет, только там код не выделяется, а этон не есть гуд..
Britva спасибо скачал в хелпе- очень удобно =)
Итак подитожим всё выше сказаное: пример приведенный
Теоретиком не работает только у меня, с тем что дал NAS я не знаю что делать, а кроме меня никто с такой проблемой не сталкивался... жаль прийдётся  просто выделять одним цветом... блин а такая фишка получилась бы...
Название: Кусочек кода.
Отправлено: AliMamed от 15 Января 2002, 22:01:48
http://www.php.net/manual/en/function.highlight-string.php

ну или если надо целиком файл, то
http://www.php.net/manual/en/function.highlight-file.php
или просто
http://www.php.net/manual/en/function.show-source.php
Название: Кусочек кода.
Отправлено: AliMamed от 15 Января 2002, 22:02:40
эээ я вторую страницу не увидел=)
Название: Кусочек кода.
Отправлено: ThE0ReTiC от 15 Января 2002, 22:09:26
Вообще довольно странно, что у тебя не работает это:
текст текст текст
[-php]
echo "alan";
?>
[-/php]
текст текст текст текст
 зайди на http://www.fastmultimedia.ru/index.html и вставь в форму этот кусок текст (не забудь убрать тире из тегов), или кусок статьи. Я для тестирования брал первые абзацы Lion\'овской статьи.
Увидишь результат работы.

Б%? буду - на шести машинах работает.
Название: Кусочек кода.
Отправлено: Alan от 15 Января 2002, 22:25:36
да я уже не знаю... вот посмотри сам http://www.designer.vov.ru/stream_highlight/stream_highlight/index.html
я ничего не менял - это то что ты прислалThE0ReTiC
Название: Кусочек кода.
Отправлено: ThE0ReTiC от 15 Января 2002, 22:30:25
Пришли взад.
Название: Кусочек кода.
Отправлено: ThE0ReTiC от 15 Января 2002, 23:18:05
Я осел. прислал тебе не ту версию. Публично признаюсь в собственном идиотизме и прошу прощения.
Рабочий релиз ушел на твое мыло.
Название: Кусочек кода.
Отправлено: Alan от 15 Января 2002, 23:26:03
Ты супер! =)ThE0ReTiC