PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

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

> Найдено сообщений: 6
Phobos Отправлено: 15 Декабря, 2009 - 14:30:25 • Тема: CKEditor+подсветка синтаксиса. Как?.. • Форум: JavaScript & VBScript

Ответов: 2
Просмотров: 2217
Carzil пишет:
highlight

Нашел я такой highlight.js , однако никакой инфы по интеграции вроди нет. Буду разбираться, спасибо!
Phobos Отправлено: 25 Ноября, 2009 - 08:03:43 • Тема: CKEditor+подсветка синтаксиса. Как?.. • Форум: JavaScript & VBScript

Ответов: 2
Просмотров: 2217
Здравствуйте!
Подскажите, пожалуйста какой-нибудь плагин, который бы подсвечивал синтаксис разных языков (PHP, HTML, Delphi, C++, JS и т.д.), и который можно бы было интегрировать в новый визуальный редактор CKEditor 3.х (на данный момент 3.0.1). И, если можно, объясните - как это сделать.

Или же подскажите какой-нибудь php-парсер для этих же целей, который бы динамически, при открытии пользователем статьи, парсил её, находил определённый тег (например <div class="php"></div>) и подсвечивал содержимое. Правда в этом случае было бы неплохо, если бы вы объяснили как в CKEditor-e можно добавить свои кнопки (мини плагины, которые бы просто помещали выделенный текст в этот тег).

Спасибо, заранее! Подмигивание
Phobos Отправлено: 25 Февраля, 2008 - 18:51:13 • Тема: Помогите составить регулярное выражение, пожалуйста. • Форум: Регулярные выражения

Ответов: 6
Просмотров: 331
evgenijj пишет:
Phobos пишет:
Но вложенность не может быть больше 1-го уровня

Phobos пишет:
если в исходное значение добавить ещё переменных в скобках, то уже ничего не работает правильно.


Тут нет противоречия. Я имел ввиду добавить рядом значение, а не внутрь, не изменяя уровень вложенности:

{1|2|3{3.1|3.2|.3.3}}
или
{1|2|3{3.1|3.2|.3.3}4{4.1|4.2|.4.3}}
или
{1|2|3{3.1|3.2|.3.3}4{4.1|4.2|.4.3}}5{5.1}

Вот какие случаи. тоесть вложенность не больше 1-го.
Видимо я просто плохо сформулировал задачу.

Спасибо.
Phobos Отправлено: 22 Февраля, 2008 - 04:26:59 • Тема: Помогите составить регулярное выражение, пожалуйста. • Форум: Регулярные выражения

Ответов: 6
Просмотров: 331
evgenijj

Спасибо!

Однако это немного не то. Возможно я просто неправильно или как-то непонятно объяснил.
С Вашим кодом получается так, что если в исходное значение добавить ещё переменных в скобках, то уже ничего не работает правильно.

Просто в задаче заранее неопределено - сколько будет в тексте вхождений скобок с вложенными скобками (и сколько в них будет вложенных) и сколько обычных 1-го уровня.

Я решил всетаки эту задачу, однако без регулярных выражений вообще. Чисто на элементарных функциях PHP. Однако может я и неправильно поступил.
Но самое главное, всё работает!
Вот код:
PHP:
скопировать код в буфер обмена
  1.  
  2. $text = "Основ 1 {Знач 1{3.3|}{} {jhgjhgh} Знач 4{4.3|}ascasc} Основ 2 {Ещё{} кое-что}{Ещё{} кое-что} [] {} {{}}";
  3.  $text2= $text;
  4.  
  5.     //Ищем пару скобке.
  6.     for ($i=0; $i<=substr_count($text2, '}')-1; $i++)
  7.     {
  8.       $msoppos = strpos($text, '{');
  9.       $msclpos = strpos($text, '}');//Находим позицию 1-й }
  10.       //Если между откр (::main~ и найденым } количество откр. равно кол-ву закр. подскобок, то принимаем за главную и закрываем (заменяем на усл. знак.), если нет то дальше
  11.       $buffer = substr($text, $msoppos+1, $msclpos-$msoppos-1);
  12.       //Счит. кол-во { и }
  13.       $socnt = substr_count($buffer, '{');
  14.       $sccnt = substr_count($buffer, '}');
  15.       $ssccnt = substr_count($buffer, '~sub::)');
  16.      
  17.       if ($socnt == $sccnt or $socnt == $ssccnt)//Если количество открывающих и закрывающих внутри равны, то значит наша закрывающая есть главная!!! УРА!!!
  18.       {
  19.         //Заменяем значения, чтобы к ним уже не возвращаться! Уффффф.
  20.         $msoppos = strpos($text, '{');        
  21.         $text = substr_replace($text, '(::main~', $msoppos, 1);//Заменяем { на (::main~
  22.        
  23.         $msclpos = strpos($text, '}');//Находим позицию 1-й }
  24.         $text = substr_replace($text, '~main::)', $msclpos, 1);//Заменяем } на ~main::)
  25.        
  26.         //Теперь все внутренние закр. скобки заменяем на усл. знак. (::sub~
  27.         $buffer2 = substr($text, $msoppos, $msclpos-$msoppos);
  28.         $buffer3 = str_replace('{', '(::sub~', $buffer2);
  29.         $text = str_replace($buffer2, $buffer3, $text);
  30.  
  31.       }
  32.       else
  33.       {
  34.         $text = substr_replace($text, '~sub::)', $msclpos, 1);//Заменяем } на ~main::)
  35.       }
  36.     }
  37.  
  38. echo '<b>'.$text.'<br>';
  39.  

Но сразу оговорюсь, что он только часть функции выполняет, а именно делает отличие между вложенными скобками и скобками 1-го уровня. Это самое главное было. А когда они различны - уже просто дальше их выделить, и выделить все значения из них.

Спасибо за внимание и ответы!!! Подмигивание

P.S. Не серчайте, что код кривоватый. Пол ночи писал, и спать ужо охота!!! Улыбка
Phobos Отправлено: 17 Февраля, 2008 - 03:22:39 • Тема: Помогите составить регулярное выражение, пожалуйста. • Форум: Регулярные выражения

Ответов: 6
Просмотров: 331
scuter пишет:
есть такие интересные функции,
http://www.php.su/functions/?explode
http://www.php.su/functions/?implode

Эти интересные функции я знаю прекрасно Улыбка Но они мне здесь не помогут (хотя в целом в проге применяются) Улыбка

Я же писал конкретно что нужно:
Цитата:

Суть в том, что мне нужно получть отдельно:
- {Значение 1|Значение 2|Значение 3
- {Значение 3.1|Значение 3.2|Значение 3.3|}
- Значение 4
- {Значение 4.1|Значение 4.2|Значение 4.3|}
- Значение 5
и потом уже дальше с ними манипулировать.

А как составить рег. выр., ну не въеду уже 2-й день. Просто логически немогу догадаться. Как можно скрипту объяснить - где у открывающейся скобки именно её закрывающая, а не первая попавшаяся по строке?.. Ниндзя
Самое интересное - это же как-то реализовано в той же моей любимой Zend Studio: ставишь курсор перед скобкой а он тнбн ПРАВИЛЬНО определяет её закрывающую (или наоборот). Это не к тому, что я хочу интерпретатор ПХП на ПХП писать, просто суть похожая.
Phobos Отправлено: 16 Февраля, 2008 - 18:02:15 • Тема: Помогите составить регулярное выражение, пожалуйста. • Форум: Регулярные выражения

Ответов: 6
Просмотров: 331
Здравствуйте!
Встал довольно срочный вопрос. В общем никак немогу составить правильно регулярное выражение на PHP.
Суть такая.
Есть некое количество переменных значений в фиг. скобках, в свою очередь в этих скобках могут быть ещё фигурные скобки. Таким образом, получается вложеннось. Но вложенность не может быть больше 1-го уровня, что естественно задачу облегчает. НО. Принципиально важно, чтобы в фиг. скобках вложенными были только фиг. скобки, а не какие другие делимиторы.

Вот пример исходной строки:

Основное {Значение 1|Значение 2|Значение 3 {Значение 3.1|Значение 3.2|Значение 3.3|} Значение 4{Значение 4.1|Значение 4.2|Значение 4.3|} Значение 5} Основное 2

Суть в том, что мне нужно получть отдельно:
- {Значение 1|Значение 2|Значение 3
- {Значение 3.1|Значение 3.2|Значение 3.3|}
- Значение 4
- {Значение 4.1|Значение 4.2|Значение 4.3|}
- Значение 5
и потом уже дальше с ними манипулировать.

Пробую preg_match_all("~\{(.*)\}~isU", $stroka, $fVarsArray, PREG_PATTERN_ORDER)
Где $stroka - исходная строка, $fVarsArray - массив того, что находит.
Но находит не то.
Вместо 1-го значения оно мне выдаёт {Значение 1|Значение 2|Значение 3 {Значение 3.1|Значение 3.2|Значение 3.3|}, а не {Значение 1|Значение 2|Значение 3

Подскажите, как мне быть.

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB