preg_replace - траблы с выводом в пременную replace а

Сенсей

Новичок
preg_replace - траблы с выводом в пременную replace а

PHP:
$skin = "'<table class=\"codetable\"><tr><td class=\"codetable\">$1</td></tr></table>'";
	$text = preg_replace('/\[code\](.+)\[\/code\]/isUe', $skin, $text);
так пашет ....

но сколько не пробовал обработать $1 через htmlspecialchars - нихрена не пашет ...

чувствую что что то с ковычками ... а вот что :(

например делаю :

PHP:
$skin = "'<table class=\"codetable\"><tr><td class=\"codetable\">".htmlspecialchars('$1')."</td></tr></table>'";
	$text = preg_replace('/\[code\](.+)\[\/code\]/isUe', $skin, $text);
не пашет :(

подскажите ....
 

Profic

just Profic (PHP5 BetaTeam)
кавычки перепутал :)
то, что ты отдаешь replace-у при модификаторе /e должно быть строкой, которую интерпритируют.
PHP:
$skin = '\'<table class="codetable"><tr><td class="codetable"\'.htmlspecialchars(\'$1\').\'</td></tr></table>\'';
 

Сенсей

Новичок
Спосибо ! Пашет :)

Только вот одна трабла появилась небольшая ....

если например имеем между тегими кода :

<Files ~ "*.*">
Order allow,deny
Deny from all
</Files>

То при выводе уже имеем :

<Files ~ \"*.*\">
Order allow,deny
Deny from all
</Files>

Что бы это значило ?

И еще ... не надо ли прогонять через preg_qoute этот $1 ?
 

Profic

just Profic (PHP5 BetaTeam)
попробуй поменять внутренние кавычки в htmlspecialchars на двойные

нет не нужно, т.к. это уже то, на что заменям, а не то, что ищем
 
Сверху