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

Форум Регулярные Выражения

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вывести url :(

Сообщения:  [1-8] 

 
 автор: kasmanaft   (07.01.2008 в 19:18)   письмо автору
 
   для: SHAman   (07.01.2008 в 18:38)
 

Это старая тема, её спамбот поднял :)
А рег. выражение получилось практически такое же.. И я бы всё-таки оставил первое.
А [\s]* - да, можно на \s* позаменять...

   
 
 автор: SHAman   (07.01.2008 в 18:38)   письмо автору
 
   для: kasmanaft   (23.07.2007 в 20:28)
 

Мне вот не нравится конструкция [\s]* она равносильна \s*. А вообще, можно как-то так урлы выделять:
\[\s*url\s*=\s*([^\s]+)\s*\](.*?)\[\s*\/\s*url\s*\]


Не тестировал. А вообще, я писал статью про преобразование тега url в bb-code.

   
 
 автор: kasmanaft   (23.07.2007 в 21:21)   письмо автору
 
   для: winflip   (23.07.2007 в 20:51)
 

Вообще это непросто сделать, чтобы коментарии не выделялись внутри строк...
Конкретно для того, чтобы не портить ссылки, можно вот так рег выражение исправить (которое комменты подсвечивает)

"'((?<!http:|ftp:|https:)(?:#|//)[^\n]*|\/*.*?\*/)'si"

   
 
 автор: winflip   (23.07.2007 в 20:51)   письмо автору
 
   для: kasmanaft   (23.07.2007 в 20:43)
 

Всё нашёл : нехватает ]. Работает :)
Вопрос номер 2
Вот код

function shighlight($document)
 {
  $document = str_replace("<", "&lt;", $document);
  $document = str_replace(">", "&gt;", $document);
  $patern = "#\[[\s]*url[\s]*=[\s]*([^\]]*)\]([^\[]*)\[[\s]*/url[\s]*\]#i";
  $replasement = '<a href=\\1>\\2</a>';
  $document = preg_replace($patern, $replasement, $document);
  $tegs = array("'&lt;\?php'si", "'&lt;\?'si", "'\?&gt;'si");
  $replace = array("<font color=#95001E>&lt;?php</font>",
                   "<font color=#95001E>&lt;?</font>",
                   "<font color=#95001E>?&gt;</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>";
 }


Если документу присвоить адрес с хттп:// то он выводит фуфло :(
Я так понимаю код понимает // как комментарий :(
Как мне исправить эту ошибку

   
 
 автор: kasmanaft   (23.07.2007 в 20:43)   письмо автору
 
   для: winflip   (23.07.2007 в 20:41)
 

Можбыть :)
Вы скажите что нужно от этого выражения и почему думаете, что оно не работает.

Если конкретно, мне не нравится вот это: [^\]) - тут похоже не хватает кв. скобки. (и плюса после нее)

   
 
 автор: winflip   (23.07.2007 в 20:41)   письмо автору
 
   для: kasmanaft   (23.07.2007 в 20:28)
 

Да вроде бы всё хватает ?????

   
 
 автор: kasmanaft   (23.07.2007 в 20:28)   письмо автору
 
   для: winflip   (23.07.2007 в 20:02)
 

Неплохо было бы знать, что в нем нужно доделывать :rolleyes:

Вот тут обратите внимание... чего-то не хватает, наверное
#\[[\s]*url[\s]*=[\s]*([^\])\]([^\[]*)\[[\s]*/url[\s]*\]#i

   
 
 автор: winflip   (23.07.2007 в 20:02)   письмо автору
 
 

Подскажите плз как доделать это регулярное выражение

  $patern = "#\[[\s]*url[\s]*=[\s]*([^\])\]([^\[]*)\[[\s]*/url[\s]*\]#i";
  $replasement = '<a href=\\1>\\2</a>';
  $document = preg_replace($patern, $replasement, $document);

Заранее спасибо

   

Сообщения:  [1-8] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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