Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2012, 21:21   #1
impulsgraw
Верховный Судья
Пользователь
 
Аватар для impulsgraw
 
Регистрация: 23.11.2010
Сообщений: 82
По умолчанию PReg_Replace не работает

Здравствуйте!
Есть код:
PHP код:
function stripFulTagSystem($text){
$out $text;
$out preg_replace_callback('/\[center\](.*?)\[\/center\]/'create_function('$m','return "<center>".$m[1]."</center>";'),$out);
$out preg_replace_callback('/\[b\](.*?)\[\/b\]/'create_function('$m','return "<b>".$m[1]."</b>";'),$out);
$out preg_replace_callback('/\[style=\"(.*?)\"\](.*?)\[\/style\]/'create_function('$m','return "<font style=\'".$m[1]."\'>".$m[2]."</font>";'),$out);
$out preg_replace_callback('/\[class=\"(.*?)\"\](.*?)\[\/class\]/'create_function('$m','return "<font class=\'".$m[1]."\'>".$m[2]."</font>";'),$out);
return 
$out;

Вроде-бы, всё написанно правильно, ошибок не выдаётся, но есть текст:
Код:
\[center\] 
\[style="font-weight:bolder; font-size:20px;"\]Уважаемые посетители!\[\/style\] 
Администрация сайта *** поздравляет вас с Новым Годом! 
Счастья вам в новом году и успехов во всех начинаниях! 
\[\/center\]
(дроби поставил специально, чтобы форум не пропускал код...)
и если его пропустить через эту функцию, то он таким-же и останется.
В чём проблема?

Последний раз редактировалось impulsgraw; 02.01.2012 в 21:24.
impulsgraw вне форума Ответить с цитированием
Старый 02.01.2012, 21:53   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
. - любой символ, кроме перевода строки. Но есть модификатор, при использовании которого перевод строки тоже относится к "любым" символам.
....
Модификаторы:
s - если используется, то символ . соответствует и переводу строки. Иначе она ему не соответствует.
Источник
Andkorol вне форума Ответить с цитированием
Старый 02.01.2012, 22:03   #3
impulsgraw
Верховный Судья
Пользователь
 
Аватар для impulsgraw
 
Регистрация: 23.11.2010
Сообщений: 82
По умолчанию

Спасибо, в этом разобрался, теперь center он не пропускает. Но почему же он пропускает style="..." ?
impulsgraw вне форума Ответить с цитированием
Старый 02.01.2012, 22:08   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от impulsgraw Посмотреть сообщение
Спасибо, в этом разобрался, теперь center он не пропускает. Но почему же он пропускает style="..." ?
У меня всё отлично отрабатывает:
PHP код:
$test '[center] 
[style="font-weight:bolder; font-size:20px;"]Уважаемые посетители![/style] 
Администрация сайта *** поздравляет вас с Новым Годом! 
Счастья вам в [b]новом году[/b] и успехов во всех начинаниях! 
[/center]'
;

function 
stripFulTagSystem($text){
$out $text;
$out preg_replace_callback('/\[center\](.*?)\[\/center\]/s'create_function('$m','return "<center>".$m[1]."</center>";'),$out);
$out preg_replace_callback('/\[b\](.*?)\[\/b\]/'create_function('$m','return "<b>".$m[1]."</b>";'),$out);
$out preg_replace_callback('/\[style=\"(.*?)\"\](.*?)\[\/style\]/'create_function('$m','return "<font style=\'".$m[1]."\'>".$m[2]."</font>";'),$out);
$out preg_replace_callback('/\[class=\"(.*?)\"\](.*?)\[\/class\]/'create_function('$m','return "<font class=\'".$m[1]."\'>".$m[2]."</font>";'),$out);
return 
$out;
}

var_dump(stripFulTagSystem($test)); 
Вывод:
Цитата:
string '<center>

<font style='font-weight:bolder; font-size:20px;'>Уважаемые посетители!</font>

Администрация сайта *** поздравляет вас с Новым Годом!

Счастья вам в <b>новом году</b> и успехов во всех начинаниях!

</center>' (length=328)
Andkorol вне форума Ответить с цитированием
Старый 02.01.2012, 22:16   #5
impulsgraw
Верховный Судья
Пользователь
 
Аватар для impulsgraw
 
Регистрация: 23.11.2010
Сообщений: 82
По умолчанию

Всё понял!
У меня стояла обработка массива $_POST на htmlspecialchars, то есть " -> &quot; .
Теперь всё понятно)
Спасибо!
impulsgraw вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с Preg_replace stepennwolf PHP 4 22.01.2011 19:44
Шаблон для preg_replace() ExHang PHP 1 07.01.2011 17:31
Функция preg_replace sergeiqwe PHP 11 02.05.2010 21:47
preg_replace ?? или что то другое... micron PHP 14 18.02.2010 15:10
preg_replace Def@ult PHP 2 12.11.2007 01:58