|
|
|
| Помогите люди добрые , видемо сегодня не мой день , часа два уже пишу подсветку PHP ,и чёт пока неочень !
Вопрос такой :
юсер пишет например вот такое сообщение
<code>
...тут пхп код...
$a=strpos($m,"<code>");
$b=strpos($m,"</code>");
...тут пхп код...
</code>
вопрос : как подсветить код между первым и последним тэгом не воспринемая остальные "...s($m,"<code>")..." | |
|
|
|
|
|
|
|
для: lirik
(04.12.2007 в 08:24)
| | highlight_string() | |
|
|
|
|
|
|
|
для: KPETuH
(04.12.2007 в 09:00)
| | ОБЫЧНЫЙ ТЕКСТ который не надо подсвечивать
<code>
...тут пхп код...
$a=strpos($m,"<code>");
$b=strpos($m,"</code>");
...тут пхп код...
</code>
ОБЫЧНЫЙ ТЕКСТ | |
|
|
|
|
|
|
|
для: lirik
(04.12.2007 в 09:10)
| | Например вот так:
<?php
$text = 'юсер пишет например вот такое сообщение
<code>
<?php
// тут php код
$a = strpos($m, "code");
$b = strpos($m, "code");
?>
</code>
вопрос : как подсветить код';
echo preg_replace("|<code>(.*?)</code>|ise", "highlight_string(stripslashes('\\1'), 1)", $text);
?>
|
Смотрите, чтобы в самом коде не было тегов <code> ... | |
|
|
|
|
|
|
|
для: kasmanaft
(04.12.2007 в 09:23)
| | что то я не понял , что если юсеру необходимо использовать теги <code> , прийдется не довать ему это делать чтоли??? | |
|
|
|
|
|
|
|
для: lirik
(04.12.2007 в 09:31)
| | читайте внимательно сначала... зачем давать юзеру использовать тег [код] внутри тега [код]? | |
|
|
|
|
|
|
|
для: KPETuH
(04.12.2007 в 09:35)
| | как сделать бездейственным тег [код] в нутри действующих тегов [код] ??? | |
|
|
|
|
|
|
|
для: lirik
(04.12.2007 в 09:31)
| | Придется отказаться от тега <code> и использовать, например, [code]
(или ~||phpcode||~ , если хотите :) )
>> как сделать бездейственным тег [код] в нутри действующих тегов [код] ???
Это сделать можно, но вряд ли это будет оправданно.. Только нагрузки больше. | |
|
|
|
|
|
|
|
для: kasmanaft
(04.12.2007 в 09:41)
| | >Придется отказаться от тега <code> и использовать, например, [code]
>(или ~||phpcode||~ , если хотите :) )
я и использую тег [code] , просто написал <code> что бы не выделялось .
>Это сделать можно, но вряд ли это будет оправданно.. Только нагрузки больше.
а это действительно так сложно , на первый взгляд вроде не очень , мне кажеться может заменять теги <code> которые идут после <?php и до ?> , а что делать с остальными ?? | |
|
|
|
|
|
|
|
для: lirik
(04.12.2007 в 09:55)
| | или может сказать что если хотите использовать код , то обязательно пользуйтесь кнопкой по добавлению тегов ,а не пишите теги сами, потом средствами джаваскрипт передовать с этими тегами какойто id ???
что разве некто не решал эту проблему ?(если вообще это ктото считает проблемой) | |
|
|
|
|
|
|
|
для: lirik
(04.12.2007 в 09:55)
| | >> может заменять теги <code> которые идут после <?php и до ?>
Вообще-то, по сути, вы эти теги вводите как для того, чтобы отделить простой текст от php кода. То, что находится между <code> и </code> - это php код. А не то, что между <?php и ?> !
А вообще-то... Попробуйте вот такое выражение: "#<code>((?:<code>.*?</code>|.)*?)</code>#ise"
Нагрузки возрастут, но не очень сильно. | |
|
|
|
|
|
|
|
для: kasmanaft
(04.12.2007 в 10:09)
| | >Вообще-то, по сути, вы эти теги вводите как для того, чтобы отделить простой текст от php кода. То, что находится между <code> и </code> - это php код. А не то, что между <?php и ?> !
поправте меня если я неправ , но насколько я знаю функция highlight_string считает пхп кодом тот текст который заключон в <?php ?> или <? ?> , а всё остальное хтмл кодом ?!
пример:
echo phpinfo();
<?php
echo phpinfo();
?>
|
// <!--теги не используются-->
echo phpinfo();
|
>Попробуйте вот такое выражение: "#<code>((?:<code>.*?</code>|.)*?)</code>#ise"
это рег.вырожение ? , я не силён в них , вы не могли бы написать приблезительный код | |
|
|
|
|
|
|
|
для: lirik
(04.12.2007 в 10:19)
| | >> но насколько я знаю функция highlight_string считает пхп кодом тот текст который заключон в <?php ?> или <? ?>
Да, верно. Тогда зачем вы эти теги вводите?
>> это рег.вырожение ? , я не силён в них , вы не могли бы написать приблезительный код
Просто замените рег. выражение из кода, что я приводил наверху на это. | |
|
|
|
|
|
|
|
для: kasmanaft
(04.12.2007 в 10:24)
| | >>Тогда зачем вы эти теги вводите?
чтобы поместить код в рамку и использовать другой шрифт , а также если если пользователь спросит чтото конкретно про этот тег например :
<пример>А что если в теге <?php не писать php ? </пример>
тут теги не закрыты , и весь остальной текст будет разноцветным ? | |
|
|
|
|
|
|
|
для: kasmanaft
(04.12.2007 в 10:09)
| | >>Попробуйте вот такое выражение: "#<code>((?:<code>.*?</code>|.)*?)</code>#ise"
Извените , я уже говорил что не силен в них , но насколько я понял это вырожение
предотврощает ошибку при использовании <code></code> , а если между тегами будет один такой тег то всё заглючит ещё больше чем сначала , или нет ??? | |
|
|
|
|
|
|
|
для: lirik
(04.12.2007 в 10:46)
| | ответь те пожалуйста в чем смысл делать вот так пользователю:
[kode]
...............
[kode]
чегото есче.....
[/kode]
.................
[/kode]
помоему просто тупо удалять все включения тегов [kode] и [/kode] в тексте между двумя крайними тегами... так как скорее всего это будет ошибка пользователя... | |
|
|
|
|
|
|
|
для: KPETuH
(04.12.2007 в 10:51)
| | >ответь те пожалуйста в чем смысл делать вот так пользователю:
>
>[kode]
>...............
>[kode]
>чегото есче.....
>[/kode]
>.................
>[/kode]
по мойму вопрос не умесный , и с чево вы взяли этот код ? , в своём вопросе я для примера привёл код
ОБЫЧНЫЙ ТЕКСТ который не надо подсвечивать
<code>
...тут пхп код...
$a=strpos($m,"<code>");
$b=strpos($m,"</code>");
...тут пхп код...
</code>
ОБЫЧНЫЙ ТЕКСТ
или вы это тоже считаете ошибкой пользователя ??? | |
|
|
|
|
|
|
|
для: lirik
(04.12.2007 в 12:00)
| | Так чем Вам тогда полный пример kasmanaft`а не нравится?
<?php
$text = 'юсер пишет например вот такое сообщение
<code>
<?php
// тут php код
$a = strpos($m, "<code>");
$b = strpos($m, "</code>");
?>
</code>
вопрос : как подсветить код';
echo preg_replace("#<code>((?:<code>.*?</code>|.)*?)</code>#ise", "highlight_string(stripslashes('\\1'), 1)", $text);
?>
|
| |
|
|
|
|
|
|
|
для: lirik
(04.12.2007 в 12:00)
| | вопрос мой проистекал из ваших ответов и вопросов на Код предложенный вам как решение... | |
|
|
|
|
|
|
|
для: lirik
(04.12.2007 в 10:46)
| | >насколько я понял это вырожение предотврощает ошибку при использовании <code></code> , а если между тегами будет один такой тег то всё заглючит ещё больше чем сначала , или нет ???
Нет, хуже не будет (уже некуда :) ). Вы попробуйте, чего гадать.
В конце концов нажмет ваш пользователь на кнопочку "редактировать" и отредактирует как надо.
Попробуйте так:
echo preg_replace("|<code>(.*?)</code>|ise", "highlight_string(stripslashes('\\1'), 1)", $text);
и так:
echo preg_replace("#<code>((?:<code>.*?</code>|.)*?)</code>#ise", "highlight_string(stripslashes('\\1'), 1)", $text);
Поэксперементируйте, выберите, что лучше.. | |
|
|
|
|
|
|
|
для: kasmanaft
(04.12.2007 в 12:06)
| | если пропадут идеи, то можно посмотреть на уже готовый скрипт для проверки синтаксиса :)
http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi | |
|
|
|