Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.06.2007, 10:49
drwhite вне форума Посмотреть профиль Отправить личное сообщение для drwhite Найти все сообщения от drwhite
  № 11  
Ответить с цитированием
drwhite

Регистрация: Oct 2005
Адрес: /
Сообщений: 87
Отправить сообщение для drwhite с помощью ICQ
Цитата:
Это не так ;-) Один обратный слэш записывается в шаблоне не так \\ , а так: \\\\
Ну тоесть это — да, чтобы поставить \ надо написать \\\\,
но, что весьма интересно, \\\ тоже работает, а чтобы заменить точку, можно поставить и \. и \\. =)

Я, правда, по-аглицки не очень, но зато в глаз бросилась запись подмаски \$1, лучше писать ${1}

Цитата:
Пойду застрелюсь ((((
Погоди, ты сначала четко, по-русски скажи что требуется, а там посмотрим.
Кстати, начинай потихоньку забывать про ereg, переходи на preg, это круче =)
__________________
__________________


Последний раз редактировалось drwhite; 10.06.2007 в 10:58.
Старый 10.06.2007, 15:36
Aka_no_Ou вне форума Посмотреть профиль Отправить личное сообщение для Aka_no_Ou Найти все сообщения от Aka_no_Ou
  № 12  
Ответить с цитированием
Aka_no_Ou

Регистрация: Jun 2007
Сообщений: 7
Пытаюсь с помощью регулярных выражений не убирать Font, а исправить для понимания флешем. Т.е. заключить значение в кавычки... Есть у PostNuka такой недостаток при формировани тегов... Думал сначала убрать Font, но раз уж все теги... лучше править чем удалять... Но то, что мне удалось написать не отрабатывает:
Код:
<?
$test = "<FONT color=#CC0000>TEST</FONT>";
$patterns = "#";
$replace= "\"#";
$text = str_replace($patterns,$replace,$test);
$text1 = ereg_replace ('="#([^>]*)"','"1"',$text); 
echo $text1;
?>
Закрывающие кавычки не добавляются... Вот и спрашиваю - в чем я ошибаюсь...
И сразу следующий вопрос: а когда в строчке несколько параметров, как правильно им шаблон задать? Первый символ я найду, а вот последний? к примеру: <width=111 height=23> Мне уже кажется, что проще сделать дамп базы, и через Find->replace в текстовом редакторе... А потом следить за каждой новостью и подправлять вручную....

Старый 11.06.2007, 00:55
FFFantik вне форума Посмотреть профиль Отправить личное сообщение для FFFantik Найти все сообщения от FFFantik
  № 13  
Ответить с цитированием
FFFantik

Регистрация: May 2007
Сообщений: 22
Цитата:
Сообщение от drwhite
Ну тоесть это — да, чтобы поставить \ надо написать \\\\,
но, что весьма интересно, \\\ тоже работает
Действительно и \\\ тоже работает... чудеса =)
Цитата:
Сообщение от Aka_no_Ou
Пытаюсь с помощью регулярных выражений не убирать Font, а исправить для понимания флешем. Т.е. заключить значение в кавычки...
Вот =) Можно ведь и без str_replace() обойтись...
Код:
$test = "<FONT color=#CC0000>TEST</FONT>";
$text1 = ereg_replace ('color=#([^>]*)','color="#\\1"',$test);
echo $text1;
А ошибки здесь:
Код:
$text1 = eregi_replace ('="#([^>]*)"','"1"',$text);
такие: замена не правильно составлена, надо не просто 1 ставить, а \\1
и в самом шаблоне ошибка: ="#([^>]*)" откуда взялась в конце кавычка? её ведь нет, str_replace() добавила только первую кавычку.

Цитата:
Сообщение от Aka_no_Ou
а когда в строчке несколько параметров, как правильно им шаблон задать? Первый символ я найду, а вот последний? к примеру: <width=111 height=23>
Не понял чего нужно найти и на что заменить =) В примерах можно? Ну тоесть надо width=110 заменить на width="110" и так далее...

Старый 11.06.2007, 01:50
Aka_no_Ou вне форума Посмотреть профиль Отправить личное сообщение для Aka_no_Ou Найти все сообщения от Aka_no_Ou
  № 14  
Ответить с цитированием
Aka_no_Ou

Регистрация: Jun 2007
Сообщений: 7
Спасибо! Надеюсь, я тоже когда-то смогу освоить регулярные выражения ))))) Кстати, а ereg_replace не будет сильно замедлять работу скрипта? Вроде в хелпе предостерегают от ее использования и рекомендуют что можно заменять через str_replace... Вот я и сунулся с ней... )) Теперь буду умнее )))

А имел я в виду следующее. Typetool в PostNuke, в форматировании, упорно удаляет кавычки из тегов: <img src="/1.jpg" width=20 height = 10>
А флеш упорно не хочет это понимать и требует <img src="/1.jpg" width="20" height = "10"> и вот не понимаю, как в таком случае будет составляться шаблон. Ибо от чего тут отталкиваться? К тому же, в теге могут быть стили, и их тоже как-то удалить нужно... Но с этим вроде крутятся кое-какие мысли, завтра утром попробую набросать... Просто не понимаю пока - одним это будет шаблоном, или два разных...

Старый 11.06.2007, 15:52
FFFantik вне форума Посмотреть профиль Отправить личное сообщение для FFFantik Найти все сообщения от FFFantik
  № 15  
Ответить с цитированием
FFFantik

Регистрация: May 2007
Сообщений: 22
Цитата:
Сообщение от Aka_no_Ou
Спасибо! Надеюсь, я тоже когда-то смогу освоить регулярные выражения ))))) Кстати, а ereg_replace не будет сильно замедлять работу скрипта? Вроде в хелпе предостерегают от ее использования и рекомендуют что можно заменять через str_replace... Вот я и сунулся с ней... )) Теперь буду умнее )))
str_replace() конечно быстрее функций с регулярными выражениями, и если можно обойтись ей одной, то она предпочтительнее разумеется ;-) Но в данном случае без регулярных выражений никак, так что использование str_replace() ни к чему не ведет...
К тому же функции семейства preg (совместимые с Perl) быстрее ereg (функции стандарта POSIX). Мануал так пишет по крайней мере.

Теперь сами выражения. Сделать сделал, потестировал - работает...но конечно за 100% успех не поручусь, ибо мало ли что =)
Сделано в три подхода =) В первый добавляем width кавычки, потом height и затем удаляем стили, наверное можно и за один раз все сделать...но все-таки чем проще чем лучше, наверное =)

PHP код:
//за пример берется вот эта строка $str
$str='<img src = "/1.jpg "  height=10 width=20  style="border: 1px solid rgb(0, 0, 0); padding: 3px 7px;" > ';

//добавляем к width кавычки
$pattern="/<img (.*?)? width=(\d*?) (.*?)?>/si";
$replace='<img \\1 width="\\2" \\3>';
$str=preg_replace($pattern,$replace,$str);
echo 
$str;
//выведет (если взглянуть код страницы): <img src = "/1.jpg " height=10 width="20" style="border: 1px solid rgb(0, 0, 0); padding: 3px 7px;" > 

//добавляем к height кавычки
$pattern="/<img (.*?)? height=(\d*?) (.*?)?>/si";
$replace='<img \\1 height="\\2" \\3>';
$str=preg_replace($pattern,$replace,$str);
echo 
$str;
//выведет (если взглянуть код страницы): <img src = "/1.jpg " height="10" width="20" style="border: 1px solid rgb(0, 0, 0); padding: 3px 7px;" > 

//Удаляем стили...
//Но будет работать только если стили заключены в кавычки, то есть: style="стили" если без, то я не знаю как быть...кажется вообще никак.. 
$pattern='/<img (.*?)? (style=".*?") (.*?)?>/xis';
$replace='<img \\1 \\3>';
$str=preg_replace($pattern,$replace,$str);
echo 
$str;
//выведет (если взглянуть код страницы): <img src = "/1.jpg " height="10" width="20" > 

Старый 11.06.2007, 18:48
Aka_no_Ou вне форума Посмотреть профиль Отправить личное сообщение для Aka_no_Ou Найти все сообщения от Aka_no_Ou
  № 16  
Ответить с цитированием
Aka_no_Ou

Регистрация: Jun 2007
Сообщений: 7
Спасибо ))) Стили и другую лишнюю информацию, которая может попасться в тегах, у меня убрать получилось, а вот кавычки добавить пока не смог ))) Но, радует, что уже хоть что-то, но получается у самого )))) Правда сделал через ereg...
И как раз, вы упомянули момент, о котором хотел спросить - как-то зависит быстродействие или нагрузка на сервер от количества проходов?
Еще раз огромное спасибо!

Старый 11.06.2007, 19:48
FFFantik вне форума Посмотреть профиль Отправить личное сообщение для FFFantik Найти все сообщения от FFFantik
  № 17  
Ответить с цитированием
FFFantik

Регистрация: May 2007
Сообщений: 22
Правильно! Лучше всего самому все делать, опять же удовольствие от собственноручно сделанной работы появляется ;-) Ну, у функций ereg синтаксис попроще, думаю все с них начинали, но принципы и там и там одни и те же...
Насчет количества проходов я не знаю =)) Но если так по опыту, то можно одно регулярное выражение составить, но такое что долго будет выполняться, а можно три рядом, но все быстро-шустро исполняться и готово =) Вообще надо на практике смотреть, конечно...

Создать новую тему Ответ Часовой пояс GMT +4, время: 16:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:01.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.