Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: BbCode - проблема

 PHP.SU

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


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

> Описание: Highlight - не получается
Spartakusmd
Отправлено: 10 Декабря, 2009 - 20:41:49
Post Id



Новичок


Покинул форум
Сообщений всего: 40
Дата рег-ции: Июль 2009  
Откуда: из-под одеяла :)


Помог: 0 раз(а)




Привет.
Вот код!
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function highlight($str)
  4. {
  5.         if( substr($code,0,2) != "<?" ) $str = "<?PHP\n" . trim($str) . "\n?>" ;
  6.         return highlight_string(stripslashes($str), true);
  7. }
  8.  
  9. $pattern = array
  10. (
  11.          '#\[ code](\r\n)?(.+?)(\r\n)?\[/code]#si',
  12. );
  13.  
  14. $replace = array
  15. (
  16.         '<div class="code">'.highlight('$2').'</div>',
  17. );
  18.  
  19. /**
  20.  * Recursive parse...
  21.  */
  22. for ($i = 0; $i < count($pattern); $i++){
  23.  
  24.         while ( preg_match( $pattern[$i], $text ) > 0 )
  25.                 $text = preg_replace($pattern, $replace, $text);
  26.                
  27. }
  28. ?>
  29.  


Проблема в том что он не выводит мой код а $2!
Как это исправить кто знает? Огорчение

(Отредактировано автором: 10 Декабря, 2009 - 20:42:38)



-----
<--- Hello --->
 
 Top
Мелкий Супермодератор
Отправлено: 10 Декабря, 2009 - 20:52:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Потому что в одинарных кавычках подстановки чего-либо не производятся. И зачем вообще переменную брать в кавычки?
'<div class="code">'.highlight($2).'</div>'


-----
PostgreSQL DBA
 
 Top
Spartakusmd
Отправлено: 10 Декабря, 2009 - 21:02:37
Post Id



Новичок


Покинул форум
Сообщений всего: 40
Дата рег-ции: Июль 2009  
Откуда: из-под одеяла :)


Помог: 0 раз(а)




Мелкий
Выдаёт ошибку:
Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in T:\home\localhost\mybb.php on line 15 где эта функция!

(Отредактировано автором: 10 Декабря, 2009 - 21:03:43)



-----
<--- Hello --->
 
 Top
Мелкий Супермодератор
Отправлено: 10 Декабря, 2009 - 21:15:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




хм, логично. переменная с цифры начинаться не может.
Ща подумаю...

Но всё равно в highlight('$2') явно не статическая строка $2 должна передаваться, а строка для замены регуляркой. А вот с регулярками я знаком неважно...


-----
PostgreSQL DBA
 
 Top
JustUserR
Отправлено: 10 Декабря, 2009 - 22:12:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Вообщето товарищи $1-$9 это специальные переменные которые сохраняют совпавшее значение в запоминающих (Стандартных) круглых скобках в регулярном выражении- такому синтаксису уже много лет и он был разумеется взял из Perl (Как и весь PRCE Улыбка
Насколько мне известно в PHP такого внешнего сохранения не происходит и надо брать значение из массива matches


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
FATAL ERROR
Отправлено: 10 Декабря, 2009 - 22:47:55
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




надо использовать не $2 а \\2 либо \${2}
 
 Top
JustUserR
Отправлено: 10 Декабря, 2009 - 23:04:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




FATAL ERROR Если вы имеете в виду что это в кавычках то они превратятся просто в '\2' и '$2' без всякой подстановки из регулярного выражения
Скорее всего данные надо брать из массива совпадений


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
FATAL ERROR
Отправлено: 10 Декабря, 2009 - 23:54:42
Post Id


Новичок


Покинул форум
Сообщений всего: 16
Дата рег-ции: Нояб. 2009  


Помог: 0 раз(а)




нет нет, они как раз превратяться в значения которые были сгруппированы скобками в регулярном выражении!!
 
 Top
valenok Модератор
Отправлено: 11 Декабря, 2009 - 10:42:19
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




preg_replace_callback


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB