|
|
|
|
|
для: SHAman
(07.01.2008 в 18:38)
| | Это старая тема, её спамбот поднял :)
А рег. выражение получилось практически такое же.. И я бы всё-таки оставил первое.
А [\s]* - да, можно на \s* позаменять... | |
|
|
|
|
|
|
|
для: kasmanaft
(23.07.2007 в 20:28)
| | Мне вот не нравится конструкция [\s]* она равносильна \s*. А вообще, можно как-то так урлы выделять:
\[\s*url\s*=\s*([^\s]+)\s*\](.*?)\[\s*\/\s*url\s*\]
|
Не тестировал. А вообще, я писал статью про преобразование тега url в bb-code. | |
|
|
|
|
|
|
|
для: winflip
(23.07.2007 в 20:51)
| | Вообще это непросто сделать, чтобы коментарии не выделялись внутри строк...
Конкретно для того, чтобы не портить ссылки, можно вот так рег выражение исправить (которое комменты подсвечивает)
"'((?<!http:|ftp:|https:)(?:#|//)[^\n]*|\/*.*?\*/)'si"
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(23.07.2007 в 20:43)
| | Всё нашёл : нехватает ]. Работает :)
Вопрос номер 2
Вот код
function shighlight($document)
{
$document = str_replace("<", "<", $document);
$document = str_replace(">", ">", $document);
$patern = "#\[[\s]*url[\s]*=[\s]*([^\]]*)\]([^\[]*)\[[\s]*/url[\s]*\]#i";
$replasement = '<a href=\\1>\\2</a>';
$document = preg_replace($patern, $replasement, $document);
$tegs = array("'<\?php'si", "'<\?'si", "'\?>'si");
$replace = array("<font color=#95001E><?php</font>",
"<font color=#95001E><?</font>",
"<font color=#95001E>?></font>");
$document = preg_replace("'((?:#|//)[^\n]*|\/*.*?\*/)'si",
"<font color=#244ECC>\\1</font>",
$document);
$document = preg_replace($tegs, $replace, $document);
$document = preg_replace("'(\n)'si","<br>\\1", $document);
$document = preg_replace("'([\w]+)([\s]*)[\(]'si",
"<font color=#0000CC><b>\\1</b></font>\\2(",
$document);
$separator = array("'\,'si",
"'\-'si",
"'\+'si",
"'\('si",
"'\)'si",
"'\{'si",
"'\}'si");
$replace = array("<font color=#1A691A>,</font>",
"<font color=#1A691A>-</font>",
"<font color=#1A691A>+</font>",
"<font color=#1A691A>(</font>",
"<font color=#1A691A>)</font>",
"<font color=#1A691A>{</font>",
"<font color=#1A691A>}</font>");
$document = preg_replace($separator, $replace, $document);
$document = preg_replace("'([\$]{1,2}[A-Za-z_]+)'si",
"<b><font color=#000000>\\1</font></b>",
$document);
$str = array("'(echo)'si",
"'(print)'si",
"'(while)'si",
"'(for)'si",
"'(if)'si",
"'(else)'si",
"'(switch)'si",
"'(function)'si",
"'(array)'si");
$replace = array_fill(0,
count($str),
"<b><font color=#0000CC>\\1</font></b>");
$document = preg_replace($str, $replace, $document);
return "<code>$document</code>";
}
|
Если документу присвоить адрес с хттп:// то он выводит фуфло :(
Я так понимаю код понимает // как комментарий :(
Как мне исправить эту ошибку | |
|
|
|
|
|
|
|
для: winflip
(23.07.2007 в 20:41)
| | Можбыть :)
Вы скажите что нужно от этого выражения и почему думаете, что оно не работает.
Если конкретно, мне не нравится вот это: [^\]) - тут похоже не хватает кв. скобки. (и плюса после нее) | |
|
|
|
|
|
|
|
для: kasmanaft
(23.07.2007 в 20:28)
| | Да вроде бы всё хватает ????? | |
|
|
|
|
|
|
|
для: winflip
(23.07.2007 в 20:02)
| | Неплохо было бы знать, что в нем нужно доделывать :rolleyes:
Вот тут обратите внимание... чего-то не хватает, наверное
#\[[\s]*url[\s]*=[\s]*([^\])\]([^\[]*)\[[\s]*/url[\s]*\]#i
|
| |
|
|
|
|
|
|
| Подскажите плз как доделать это регулярное выражение
$patern = "#\[[\s]*url[\s]*=[\s]*([^\])\]([^\[]*)\[[\s]*/url[\s]*\]#i";
$replasement = '<a href=\\1>\\2</a>';
$document = preg_replace($patern, $replasement, $document);
|
Заранее спасибо | |
|
|
|
|