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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.06.2005, 13:29
juggy вне форума Посмотреть профиль Отправить личное сообщение для juggy Посетить домашнюю страницу juggy Найти все сообщения от juggy
  № 1  
Ответить с цитированием
juggy
 
Аватар для juggy

Регистрация: Feb 2001
Адрес: LJ/~aleshru
Сообщений: 4,778
Отправить сообщение для juggy с помощью ICQ Отправить сообщение для juggy с помощью MSN Отправить сообщение для juggy с помощью Yahoo Отправить сообщение для juggy с помощью Skype™
По умолчанию Prce

Это, ну тут бы не могли бы вы подсказать.
Вот есть у меня строка
PHP код:
$source"<tag id=\"abc\">SomeContent \n\n\n\</tag>\n\n\n"
Моя задача стереть все \n что вне тэга. Любого тэга. Вот. Логика заменить все \n внутри тэгов на символ, потом реплейсить все \n на "" а потом уже все символы ( на который мы заменяли) обратно на \n

PHP код:
preg_match_all("!<([^>]*)>(.*?)</([^>]*)>!is",$source,$match); // -- working 
вот так, он мне находит всё что внутри тэгов.
И так находит.
PHP код:
$source preg_replace("!<([^>]*)>(.*?)</([^>]*)>!is","\\0<br />\\1<br />\\2<br />\\3<br />",$source); 
А реплейсить не хочет никак. Как я не пробовал. Помогайте, я уже совсем в ауте.
__________________
Что за дурь? 50 символов в подписи!?

Старый 23.06.2005, 15:38
Constantine вне форума Посмотреть профиль Отправить личное сообщение для Constantine Посетить домашнюю страницу Constantine Найти все сообщения от Constantine
  № 2  
Ответить с цитированием
Constantine
 
Аватар для Constantine

Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
Если стереть все \n вне тэга, то так:
Код:
$source=preg_replace("/<([^>]*)>([^<]*)<\/([^>]*)>\n+/i","<\\1>\\2</\\3>",$source);
__________________
X

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

Регистрация: Feb 2001
Адрес: LJ/~aleshru
Сообщений: 4,778
Отправить сообщение для juggy с помощью ICQ Отправить сообщение для juggy с помощью MSN Отправить сообщение для juggy с помощью Yahoo Отправить сообщение для juggy с помощью Skype™
работает, но как-то странно. тестирую.
__________________
Что за дурь? 50 символов в подписи!?

Старый 23.06.2005, 15:55
juggy вне форума Посмотреть профиль Отправить личное сообщение для juggy Посетить домашнюю страницу juggy Найти все сообщения от juggy
  № 4  
Ответить с цитированием
juggy
 
Аватар для juggy

Регистрация: Feb 2001
Адрес: LJ/~aleshru
Сообщений: 4,778
Отправить сообщение для juggy с помощью ICQ Отправить сообщение для juggy с помощью MSN Отправить сообщение для juggy с помощью Yahoo Отправить сообщение для juggy с помощью Skype™
PHP код:
/** Based on Smarty */
function trimWhiteSpace($source)
 {
    
preg_match_all("!<script[^>]+>.*?</script>!is"$source$match);
    
$_script_blocks $match[0];
    
$source preg_replace("!<script[^>]+>.*?</script>!is",
    
'@@@CMS:TRIM:SCRIPT@@@'$source);

    
// Pull out the pre blocks
    
preg_match_all("!<pre>.*?</pre>!is"$source$match);
    
$_pre_blocks $match[0];
    
$source preg_replace("!<pre>.*?</pre>!is",
    
'@@@CMS:TRIM:PRE@@@'$source);

    
// remove all leading spaces, tabs and carriage returns NOT
    // preceeded by a php close tag.
     
$source preg_replace('/((?<!\?>)\n)[\s]+/m''\1'$source);
     
$source preg_replace('!<\!--.*?-->!is','',$source);

    
// replace script blocks
    
foreach($_script_blocks as $curr_block) {
        
$source preg_replace("!@@@CMS:TRIM:SCRIPT@@@!",$curr_block,$source,1);
    }
    
// replace pre blocks
    
foreach($_pre_blocks as $curr_block) {
        
$source preg_replace("!@@@CMS:TRIM:PRE@@@!",$curr_block,$source,1);
    }
    
$source=preg_replace("/<([^>]*)>([^<]*)<\/([^>]*)>\n+/i","<\\1>\\2</\\3>",$source);
    return 
$source
 } 
Получилось вот что. Но оно нихрена вообще не вытягивает код в одну строку, как я хотел бы...
__________________
Что за дурь? 50 символов в подписи!?

Старый 23.06.2005, 16:01
Constantine вне форума Посмотреть профиль Отправить личное сообщение для Constantine Посетить домашнюю страницу Constantine Найти все сообщения от Constantine
  № 5  
Ответить с цитированием
Constantine
 
Аватар для Constantine

Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
бррррр! а зачем вообще такое?
__________________
X

Старый 23.06.2005, 16:02
juggy вне форума Посмотреть профиль Отправить личное сообщение для juggy Посетить домашнюю страницу juggy Найти все сообщения от juggy
  № 6  
Ответить с цитированием
juggy
 
Аватар для juggy

Регистрация: Feb 2001
Адрес: LJ/~aleshru
Сообщений: 4,778
Отправить сообщение для juggy с помощью ICQ Отправить сообщение для juggy с помощью MSN Отправить сообщение для juggy с помощью Yahoo Отправить сообщение для juggy с помощью Skype™
чистить Html-код перед выводом. сокращать траффик клиента и скорость загрузки страницы - соответственно.
__________________
Что за дурь? 50 символов в подписи!?

Старый 23.06.2005, 16:11
Constantine вне форума Посмотреть профиль Отправить личное сообщение для Constantine Посетить домашнюю страницу Constantine Найти все сообщения от Constantine
  № 7  
Ответить с цитированием
Constantine
 
Аватар для Constantine

Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
тада не понятно, зачем мы сначала ищем блоки, а потом их вычищаем, скриптовые, например... не проще ли засунуть все выражения в массив и вычистить за один проход...
А, млин, понял...
а вообще, знаю только один подходящий случай для такой чистки - мс ворд, вот там больше 50% уходит...
__________________
X


Последний раз редактировалось Constantine; 23.06.2005 в 16:15.
Старый 23.06.2005, 17:13
Constantine вне форума Посмотреть профиль Отправить личное сообщение для Constantine Посетить домашнюю страницу Constantine Найти все сообщения от Constantine
  № 8  
Ответить с цитированием
Constantine
 
Аватар для Constantine

Регистрация: Jun 2000
Адрес: $_SERVER['REMOTE_ADDR']
Сообщений: 854
Да, надо ещё после нулевых тэгов зачистить... как-то так:
Код:
$source=preg_replace("/<([^>]*)\/>\n+/i","<\\1/>",$source);
__________________
X

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

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

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


 


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


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