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

HTML+CSS+JavaScript

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

 

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

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

тема: подсветка кода в TextArea
 
 автор: victoor   (03.11.2006 в 01:49)   письмо автору
 
 

Здравствуйте! у меня есть файлик, вот его код:

<html>

<head>
  <title>Редактирование файла</title>
</head>

<body>

<form method=GET>
<input type=text value="clan/AddChempion.php" size=30 name=url>&nbsp;&nbsp;
<input type=button value="Обзор">&nbsp;&nbsp;
<input type=submit value="Открыть">
</form>

<?php
// подавляем предупреждение
error_reporting(0);

function 
highlight_code($code)
{
  
$code stripslashes($code);
  if(!
strpos($code,"<?") && substr($code,0,2)!="<?") {
    
$code="<?php\n".trim($code)."\n?>";
  }
  
$code trim($code);
  return 
highlight_string($code,true);
}



if (
$_GET['url'])
 {
 if(
preg_match('/^[a-z0-9-_~@\/\:\(\)\.\d]+$/i'$url=$_GET['url']))
   {
       
$file_array file($url);
  if(!
$file_array)
  {
    echo(
"Ошибка открытия файла");
  }
  else
  {
    for(
$i=0$i count($file_array); $i++)
    {
       
$str_file.=$file_array[$i];
    }
  }
    
$str_file=highlight_code($str_file);
    
$y=count($file_array)
    
?>
<form method=GET>
<TEXTAREA rows=<? echo($y); ?> cols=150><? echo($str_file); ?></textarea>
</form>

<?
   
}
 }
?>

</body>

</html>

По моей задумке он должен выводить в TextArea подсвеченный код заданной странички для последующего редактирования.
Когда выводилось не в TextArea - текст был подсвечен, а как только я заключил выводимый текст в это поле - вся подсветка исчезла. Может можно как-то сделать текст снова подствеченным?

   
 
 автор: Lelik   (03.11.2006 в 02:29)   письмо автору
 
   для: victoor   (03.11.2006 в 01:49)
 

в общем лучше вводимый в TextArea код выводить в соседний див и там его подсвечивать, иначе надо заключать слова в теги + нехилое знание регулярных выражений

   
 
 автор: victoor   (03.11.2006 в 13:27)   письмо автору
 
   для: Lelik   (03.11.2006 в 02:29)
 

так вся фишка в том, чтобы его можно было редактировать - это планируется редактор скриптов на сервере.
вновь вводимый текст подсвечиваться недолжен, подсвечиваться должен только тот текст, который в файле был.
Хотя если кто даст скриптик, который и вновь вводимый код будет подсвечивать - будет супер

   
 
 автор: Lelik   (03.11.2006 в 13:52)   письмо автору
 
   для: victoor   (03.11.2006 в 13:27)
 

идею понял. Типа редактор кода в браузере (а-ля Дримвивер или Ню сфер). В общем моя мысль такова - скриптик стоит денег ибо это весьма хитромудрый прикол, а вот идею как его заделать могу подсказать:
Див - поле для ввода - ловит все нажатия клавиш и отображает их прокомпелированиые коды уже как символы. Трудность в двух вещах :
1. Это устроить, так, чтоб при нажатии на клавиши текст загонялся в див (но эт не особо сложно)
2. А вторая трудность - это писанина кода на разных языках (английский, русский и т. д.)

   
 
 автор: victoor   (03.11.2006 в 14:11)   письмо автору
 
   для: Lelik   (03.11.2006 в 13:52)
 

> 2. А вторая трудность - это писанина кода на разных языках (английский, русский и т. д.)
ну это несложно сделать, если так клавиши не различаются (в чем я все же сомневаюсь) можно сделать простой переключатель на самой страничке...

но тогда появится еще одна сложность: как выбрать месть, куда вводить текст (не только в конец, но и в середуну)..
Спасибо за идею, буду думать.

   
 
 автор: 12345   (03.11.2006 в 14:21)   письмо автору
 
   для: victoor   (03.11.2006 в 14:11)
 

Подсвечивается редактируемый код, как известно, только в iframe с параметром designMode=on (если не учитывать некроссбраузерное решение с contentEditable) . Опера - с 9-й версии. Так делается в любом визуальном графическом редакторе. Берите любой подходящий. Но подсветку в бесплатных открытых вариантах не видел. Придётся писать самому или искать того, кто разрабатывал.

   
 
 автор: victoor   (03.11.2006 в 19:15)   письмо автору
 
   для: 12345   (03.11.2006 в 14:21)
 

а как-нибудь можно потом выдрать этот текст в какую-нибудь переменную php (из iframe)?

А что это за некроссбраузерное решение с contentEditable? Если оно в IE будет работать - меня устроит. Этот редактор я для личного пользования разрабатываю, и работаю пока именно в IE.

   
 
 автор: Lelik   (03.11.2006 в 19:38)   письмо автору
 
   для: victoor   (03.11.2006 в 19:15)
 

>А что это за некроссбраузерное решение с contentEditable? Если оно в IE будет работать - меня устроит. Этот редактор я для личного пользования разрабатываю, и работаю пока именно в IE.

ага, только в ИЕ

   
 
 автор: 12345   (05.11.2006 в 00:12)   письмо автору
 
   для: victoor   (03.11.2006 в 19:15)
 

Берут innerHTML, переносят в форму, отправляют.

По термину см. поиск в и-нете, частично - здесь.

   
Rambler's Top100
вверх

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