Forum Webscript.Ru
Программирование => PHP => Тема начата: Alan от 11 Января 2002, 14:43:49
-
Понимаю задрал уже, но честно я искал и не нашел.
Кто может выдряпать кусочек кода из этого форума. который проделывает разметку кода после слов [.php.] и [/php.]
точки поставил только для того чтоб на перевело.
-
Спроси у NAS\'а
-
Cм. functions.php
функции
bbcodeparse
bbcodeparse2
-
У меня заработала таккая штука:
$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]
Единственный недостаток - подсвечивает только первый кусок кода. Ну с этим, я думаю, ты справишся :)
-
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. Скоро меня на форум пускать не будут... хотя тогда зачем он...?
-
Данные передаются из формы. переменная $stream - в данном случае значенние, передаваемое из textarea.
Если кинешь мыло - пришлю пример с формой и подробными комментариями.
-
Если кинешь мыло - пришлю пример с формой и подробными комментариями
spider@vov.ru
-
Услал.
-
слушай может я что-то не так делаю или уменя что-то с настройками, но вставляю
echo "привет";
?>
ничего не выводит, а посмотрел в виде HTML вот что пишет
-
А ты не забыл ограничить код тегами [.php.] и [./php.] типа :
[.php.]
echo "привет";
?>
[./php.]
-
если так
echo "alan";
?>
то получается в html
[<\\?<\\?<\\
[/php]
-
NAS, помоги ты ж работаешь с этим форумом и я думаю знаешь как устроена эта функция
-
NAS, помоги ты ж работаешь с этим форумом и я думаю знаешь как устроена эта функция
Ну откуда я знаю. Я же с форумом работаю, а не программирую его.
-
Услал.
твой вариант не совсем подходит, потому, что если человек напишет так
[.php]
echo "hello";
?>
[//php]
получится вот так:
echo "hello";
?>
?>
-
Ну откуда я знаю. Я же с форумом работаю, а не программирую его.
а посмотреть можешь как работает эта функция?
-
а посмотреть можешь как работает эта функция?
могу
// ###################### 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,"") and substr($code,0,2)!="") {
$code="\\n".trim($code)."\\n?>";
$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
";
}
-
не получается, но есть идея как это сделать, сам написать не могу (пока)
Есть текст:
---------------------------8<------------------------
текст текст текст
[-php]
echo "alan";
?>
[-/php]
текст текст текст текст
--------------------------------8<------------------
так вот я думаю надо сначала вырезать текст до [-php] и загнать в переменную (массив например) потом вырезать всё что после [-php] и до [-/php] и при этом удалить [-php] и [-/php] а что останется загнать тоже в переменную, потом вырезать что после [-php] было и тоже в переменную, а потом можно сделать что-то типа этого
echo $b[0]."
";
echo highlight_string ($b[1])."
";
echo $b[3];
-
Кстати в пхп4 подсветка синтаксиса встроенная фича
переименуй любой скрипт в *.phps и посмотри на него в браузере.
-
Плюс еще ф-я show_source("имя_файла") есть.
-
А еще есть
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).
-
эт я знаю, но я хотел эту фишку использовать для скрипта добавления комментариев к статьям, что-то типа как на пхп.нет, только там код не выделяется, а этон не есть гуд..
Britva спасибо скачал в хелпе- очень удобно =)
Итак подитожим всё выше сказаное: пример приведенный
Теоретиком не работает только у меня, с тем что дал NAS я не знаю что делать, а кроме меня никто с такой проблемой не сталкивался... жаль прийдётся просто выделять одним цветом... блин а такая фишка получилась бы...
-
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
-
эээ я вторую страницу не увидел=)
-
Вообще довольно странно, что у тебя не работает это:
текст текст текст
[-php]
echo "alan";
?>
[-/php]
текст текст текст текст
зайди на http://www.fastmultimedia.ru/index.html и вставь в форму этот кусок текст (не забудь убрать тире из тегов), или кусок статьи. Я для тестирования брал первые абзацы Lion\'овской статьи.
Увидишь результат работы.
Б%? буду - на шести машинах работает.
-
да я уже не знаю... вот посмотри сам http://www.designer.vov.ru/stream_highlight/stream_highlight/index.html
я ничего не менял - это то что ты прислалThE0ReTiC
-
Пришли взад.
-
Я осел. прислал тебе не ту версию. Публично признаюсь в собственном идиотизме и прошу прощения.
Рабочий релиз ушел на твое мыло.
-
Ты супер! =)ThE0ReTiC