![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2007
Сообщений: 7
|
Здравствуйте, Уважаемые!
Простите, что насилую вам мозги вопросом, на который, уже наверняка, есть ответ... Простите, если по своей невнимательности я просмотрел ответ на него... Но все решения что я находил, мне не хватило знаний адаптировать под свою задачу... Но это лирика, вот собственно вопрос: В целях увеличения знаний PHP+MySQL+Flash занялся переводом своего сайта на Flash. Сайт под управлением cms PostNuke. Все бы хорошо, но запнулся на следующем моменте: в тексте, что тяну из БД очень много тегов HTML, но все это решаемо кроме одного: FONT color... И Flash ессно доходит до этого тега и останавливается... Пробовал следующее решение: $string = $pn_row[$i]['pn_hometext']; $pattern[0] = "(<FONT color=mediumblue>)"; $pattern[1] = "(</FONT>)"; $pattern[2] = "(<FONT color=black>)"; $pattern[3] = "(<FONT color=#0000ff>)"; $pattern[4] = "(<FONT color=#000000>)"; $replacement[0] = ""; $replacement[1] = ""; $replacement[2] = ""; $replacement[3] = ""; $replacement[4] = ""; $text = preg_replace($pattern, $replacement, $string); К сожалению, слишком много разных цветов встречается в тексте, поэтому такой вариант отпадает, ибо в дальнейшем могут появится и другие цвета... Стало быть, нужно сделать поиск и замену по маске? Но вот с этим у меня проблема... Никак не могу врубиться как это сделать(( В хелпе php есть пример с маской, но я его не понял (((( видимо туп-с ((( Flesh 8 (на работе) или CS (дома) - на всякий случай ![]() Очень прошу о помощи! Или есть более легкий вариант решения этой проблемы, который я проглядел? Заранее благодарен за ответы! Последний раз редактировалось Aka_no_Ou; 09.06.2007 в 18:05. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Aka_no_Ou, отредактируйте свой пост и оформите код тегами [code][/code].
|
|
|||||
|
Регистрация: May 2007
Сообщений: 22
|
Цитата:
|
|
|||||
|
Регистрация: Jun 2007
Сообщений: 7
|
Да, огромное спасибо!!!
Именно то, что нужно!!! Я пытался аналог составить, но... Увы, мне грешному ((( А вы не могли бы пояснить что для чего в этой строчке нужно? (/<\\/?font.*?>/i" ) и что чего обозначает? Или как называется раздел хелпа, где можно об этом почитать? Думаю, эти знания мне лишними в дальнейшем не будут ))) ЗЫ. Может не совсем в тему, но забавно: этот момент разрешился, но возник другой: скриптом вывожу новости, с разбивкой по страницам, формирую линки с номерами страниц. Все замечательно, но на одной странице выводится лишь 3 новости вместо 5 (ессно и до перечня страниц дело не доходит...). Никаких тегов, которые могут сбить флеш нет. Никаких отличий в этом месте вообще не нашел. Сам скрипт отрабатывает нормально... проблема лишь во флеше ( |
|
|||||
|
Регистрация: May 2007
Сообщений: 22
|
Попытаюсь объяснить =)
\\ - экранируют символ /, то есть запись\\/ указывает всего лишь на один симовол / ? - квантификатор, показывающий что символ указанный до него может встречаться либо один либо ноль раз (то есть \ - может или встречаться или нет) * - квантификатор, показывающий что символ указанный до него встречается либо ноль, либо больше раз (один, два, сто). ? после * делает квантификтор * не "жадным", про жадность хорошо не объясню, ну в общем жадные квантификаторы захыватывают так много символов как могут.. . - соответствует любому символу кроме перевода строки (\n) i - модификатор включающий регистронезависимый поиск (модификаторы отделяются от шаблона вот этими косыми чертами "/шаблон/модификаторы", вместо косых черт можно и другие символы ставить...) Почитать можно в мануале, на php.net: Синтаксис регулярных выражений: http://ru2.php.net/manual/ru/referen...ern.syntax.php Модификаторы шаблонов: http://ru2.php.net/manual/ru/referen....modifiers.php И там же справа ссылки на описания функций и примеры... Вот еще статьи, где все это более простым языком объясняют (правда не так досконально как в мануале): http://phpclub.ru/detail/article/simple_regular http://ru.wikipedia.org/wiki/Регулярное_выражение |
|
|||||
|
Регистрация: Jun 2007
Сообщений: 7
|
Огромное спасибо за исчерпывающий ответ!
Пойду усваивать новые знания на практике ![]() Совсем забыл спросить. Не буду множить темы, поэтому, надеюсь что вопрос не пропадет... В таблице новостей БД 136 строк. Сейчас обратил внимание, что после разбивки на страницы по 5 сообщений вывелось не все... 105 строк всего. Раньше я как-то не забегал в новости сайта, но сейчас посмотрел (там родная разбивка на страницы PostNuke) - выводятся тоже не все новости... Даже меньше. Начал играть с количеством выводимых на страницу сообщений - каждый раз, выводится разное число строк... Надеюсь, я понятно объясняю? ) Так вот, я тут подумал, наверное есть какие-то ограничения на размер текстовых данных, которые php может вывести к просмотру? Заранее благодарен за ответы ![]() ЗЫ... Хм... А как сделать добавление символов? к примеру font color=#000000 добавить кавычки: font color="#000000" ? перебрал кучу примеров, но так и не смог ((( Последний раз редактировалось Aka_no_Ou; 10.06.2007 в 08:22. |
|
|||||
|
Цитата:
а вообще если я правильно понял, то лучше так:
$text = '<font color="#ffffff">Если вам встретится тэг "<font>" немедленно выбросите его на помойку =)</font>';
$find = '{<font.[^<]+>(.+)</font>}is';
$replacement = '${1}';
echo 'Исх: '.htmlspecialchars($text).'<br />';
//Исх: <font color="#ffffff">Если вам встретится тэг "<font>" немедленно выбросите его на помойку =)</font>
echo 'Res: '.htmlspecialchars(preg_replace($find, $replacement, $text)).'<br />';
//Res: Если вам встретится тэг "<font>" немедленно выбросите его на помойку =)
__________________
__________________ Последний раз редактировалось drwhite; 10.06.2007 в 07:31. |
|
|||||
|
Цитата:
А вообще, даже phpMyAdmin и Joomla, которые бесспорно проверены и отлажены, лучше использовать для изучения грамотных решений, а движки делать самому, по максимуму используя возможности ООП.
__________________
__________________ Последний раз редактировалось drwhite; 10.06.2007 в 07:48. |
|
|||||
|
Регистрация: May 2007
Сообщений: 22
|
Цитата:
Мануал стоит читать вместе с комментами юзеров ;-) Много полезного можно узнать, вот например ссылка на коммент юзера по поводу как раз таки этой проблемы: http://ru2.php.net/manual/ru/functio...lace.php#36678 Вот цитата чтобы не бегать: Цитата:
|
|
|||||
|
Регистрация: Jun 2007
Сообщений: 7
|
<?
$test = "<FONT color=#CC0000>TEST</FONT>";
$patterns = "#";
$replace= "\"#";
$text = str_replace($patterns,$replace,$test);
$text1 = ereg_replace ('="#([^>]*)"','"1"',$text);
echo $text1;
?>
Пойду застрелюсь (((( 2drwhite Да там считать-то нечего... общее кол-во разделить кол-во на странице - получаю кол-во страниц... |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:49. |
|
|
« Предыдущая тема | Следующая тема » |
|
|