Здравствуйте!
Подскажите, пожалуйста какой-нибудь плагин, который бы подсвечивал синтаксис разных языков (PHP, HTML, Delphi, C++, JS и т.д.), и который можно бы было интегрировать в новый визуальный редактор CKEditor 3.х (на данный момент 3.0.1). И, если можно, объясните - как это сделать.
Или же подскажите какой-нибудь php-парсер для этих же целей, который бы динамически, при открытии пользователем статьи, парсил её, находил определённый тег (например <div class="php"></div>) и подсвечивал содержимое. Правда в этом случае было бы неплохо, если бы вы объяснили как в CKEditor-e можно добавить свои кнопки (мини плагины, которые бы просто помещали выделенный текст в этот тег).
Однако это немного не то. Возможно я просто неправильно или как-то непонятно объяснил.
С Вашим кодом получается так, что если в исходное значение добавить ещё переменных в скобках, то уже ничего не работает правильно.
Просто в задаче заранее неопределено - сколько будет в тексте вхождений скобок с вложенными скобками (и сколько в них будет вложенных) и сколько обычных 1-го уровня.
Я решил всетаки эту задачу, однако без регулярных выражений вообще. Чисто на элементарных функциях PHP. Однако может я и неправильно поступил.
Но самое главное, всё работает!
Вот код:
$msclpos=strpos($text,'}');//Находим позицию 1-й }
//Если между откр (::main~ и найденым } количество откр. равно кол-ву закр. подскобок, то принимаем за главную и закрываем (заменяем на усл. знак.), если нет то дальше
$text=substr_replace($text,'~sub::)',$msclpos, 1);//Заменяем } на ~main::)
}
}
echo'<b>'.$text.'<br>';
Но сразу оговорюсь, что он только часть функции выполняет, а именно делает отличие между вложенными скобками и скобками 1-го уровня. Это самое главное было. А когда они различны - уже просто дальше их выделить, и выделить все значения из них.
Спасибо за внимание и ответы!!!
P.S. Не серчайте, что код кривоватый. Пол ночи писал, и спать ужо охота!!!
Эти интересные функции я знаю прекрасно Но они мне здесь не помогут (хотя в целом в проге применяются)
Я же писал конкретно что нужно:
Цитата:
Суть в том, что мне нужно получть отдельно:
- {Значение 1|Значение 2|Значение 3
- {Значение 3.1|Значение 3.2|Значение 3.3|}
- Значение 4
- {Значение 4.1|Значение 4.2|Значение 4.3|}
- Значение 5
и потом уже дальше с ними манипулировать.
А как составить рег. выр., ну не въеду уже 2-й день. Просто логически немогу догадаться. Как можно скрипту объяснить - где у открывающейся скобки именно её закрывающая, а не первая попавшаяся по строке?..
Самое интересное - это же как-то реализовано в той же моей любимой Zend Studio: ставишь курсор перед скобкой а он тнбн ПРАВИЛЬНО определяет её закрывающую (или наоборот). Это не к тому, что я хочу интерпретатор ПХП на ПХП писать, просто суть похожая.
Здравствуйте!
Встал довольно срочный вопрос. В общем никак немогу составить правильно регулярное выражение на 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