Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Удаление частей строки
 
 автор: loneliness   (14.01.2007 в 14:18)   письмо автору
 
 

Подскажите, как в тексте удалить определенную конструкцию. Например, после обработки текста функцией strip_tags(); остается содержимое такого плана:

P         { margin:0; } 
.chat     { font-weight:bold; font-style: italic; } 
.user     { margin-left:1em; margin-top:1em; font-weight:bold; color:darkblue; font-size:1.3em;} 
.text     { margin-left:2em; font-weight:bold; font-size:1.5em;} 
.message  { margin-left:2em; font-weight:bold; font-size:1.1em; color:red;} 
.nick     { font-weight:bold; } 
.chatname { font-weight:bold; color:white; background-color:orange; font-size:2em;} 
td        { font-weight:bold; color:white; background-color:orange; font-size:2em;} 
.melody  { display:none; } 


  function music(){      var buttons = document.all.tags('BUTTON');      if ( buttons != null && buttons.length > 0 ) 
{          buttons[ 0 ].click();      }  }

как его удалять?

   
 
 автор: Sergey89   (14.01.2007 в 14:28)   письмо автору
 
   для: loneliness   (14.01.2007 в 14:18)
 

$text = preg_replace('|<style.*>.*</style>|Usi', '', $text);
$text = preg_replace('|<script.*>.*</script>|Usi', '', $text);

   
 
 автор: Loneliness   (14.01.2007 в 14:54)   письмо автору
 
   для: Sergey89   (14.01.2007 в 14:28)
 

Благодарю, все как надо получилось.

   
 
 автор: Unkind   (14.01.2007 в 14:45)   письмо автору
 
   для: loneliness   (14.01.2007 в 14:18)
 

Дополню свой пред. код:

<?php 
header
("Content-type: text/plain"); 

function 
get_content($url$width 450)  
{  
$buffer file_get_contents($url);  
$buffer wordwrap($buffer$width"\n");  

$buffer preg_replace('|<style[^>]*?>.*?</style>|si'''$buffer); 
$buffer preg_replace('|<script[^>]*?>.*?</script>|si'''$buffer); 

$buffer strip_tags($buffer);  

    while(
strpos($buffer"  ") !== false)  
    {  
    
$buffer str_replace("  "" "$buffer);  
    }  

    while(
strpos($buffer"\r\n\r\n") !== false)  
    {  
    
$buffer str_replace("\r\n\r\n""\r\n"$buffer);  
    }  

return 
trim($buffer);  


echo(
get_content('http://www.beeonline.ru/demo/chat?chat=mms')); 
?>

   
 
 автор: Loneliness   (14.01.2007 в 15:02)   письмо автору
 
   для: Unkind   (14.01.2007 в 14:45)
 

Еще такой ньюанс: когда используем wordwrap(); то делит по границе слова. А как сделать, чтобы делило по содержанию.
Поясню- есть посты от пользователей, и совсем нежелательно, чтобы они разбивались на части. Все посты начинаются со времени написания
например:

 14:49:30 Бабай(гость) Красноярск Бабай пришлите картинки<ems:br>14:42:23 ОТКРОВЕНИЕ  Ушел из чата:

как сделать, чтобы перенос строки вставлялся перед ближайшим постом после 450 знаков?

   
 
 автор: Unkind   (14.01.2007 в 15:13)   письмо автору
 
   для: Loneliness   (14.01.2007 в 15:02)
 

Хм...Там же после каждого поста переводы строк, зачем это?

   
 
 автор: Loneliness   (14.01.2007 в 15:51)   письмо автору
 
   для: Unkind   (14.01.2007 в 15:13)
 

Переводы строк да не совсем те. Смысл такой- реализую трансляцию чата, которая будет доступна по смс запросу. Каждая строка приходит отдельным смс. Например если вывожу текст вида:

Пост1<ems:br>Пост2<ems:br>Пост3 \r\n Пост4<ems:br>Пост5<ems:br>Пост6

то при запросе получу два отдельных смс-сообщения:
смс-1

Пост1
Пост2
Пост3

смс-2

Пост4
Пост5
Пост6

Потому и нужно, чтобы сам пост не делился на части, которые будут получены в отдельных смс, ибо тогда сложно будет разобраться в полученных смс- какая часть откуда.

Вот код, который сейчас дорабатываю:
<?php
header
("Content-Type: text/plain"); 
  
$trans 'http://www.beeonline.ru/demo/chat?chat=mms'
  
$contents file_get_contents($trans);
$contents preg_replace('|<style.*>.*</style>|Usi'''$contents); 
$contents preg_replace('|<script.*>.*</script>|Usi'''$contents);
$contents =  strip_tags($contents);
$contents str_replace("\r\n"'<ems:br><ems:br>'$contents);
$contents str_replace("\n"'<ems:br><ems:br>'$contents);
$contents wordwrap($contents,450,"\r\n"); // Вот здесь и нужно что-то сделать, чтобы вставляло переводы строк не разрывая пост.
echo $contents;   
?>


Если можно, подскажите еще, как реализовать чтобы любое количество идущих подряд <ems:br><ems:br><ems:br><ems:br>... заменялось на два: <ems:br><ems:br> по всему тексту.

   
 
 автор: Unkind   (14.01.2007 в 15:59)   письмо автору
 
   для: Loneliness   (14.01.2007 в 15:51)
 

Замените
$contents = str_replace("\r\n", '<ems:br><ems:br>', $contents);
$contents = str_replace("\n", '<ems:br><ems:br>', $contents);
на
$contents = str_replace("\r\n", "<ems:br><ems:br>\r\n", $contents);
$contents = str_replace("\n", "<ems:br><ems:br>\n", $contents);

   
 
 автор: Loneliness   (14.01.2007 в 16:09)   письмо автору
 
   для: Unkind   (14.01.2007 в 15:59)
 

Хм... Тогда оно мне каждый пост будет отдельным смс отправлять, а это ни к чему...
Нужно, чтобы каждое отдельное смс содержало около 450 символов, и не рвало посты.
php-код, который я выше привел, сейчас работает почти как требуется. Нужно только доработать два упомянутых момента- использовать какую-то альтернативу wordwrap(); чтобы посты не рвало, и разобраться с лишними <ems:br> идущими подряд(где-то потексту их получается пять-шесть подряд, где-то три... то есть количество непостоянно), заменив их по всему тексту на:
<ems:br><ems:br>

   
 
 автор: Loneliness   (14.01.2007 в 16:19)   письмо автору
 
   для: Loneliness   (14.01.2007 в 16:09)
 

С <ems:br> разобрался

<?php
header
("Content-Type: text/plain"); 
  
$trans 'http://www.beeonline.ru/demo/chat?chat=mms'
  
$contents file_get_contents($trans);
$contents preg_replace('|<style.*>.*</style>|Usi'''$contents); 
$contents preg_replace('|<script.*>.*</script>|Usi'''$contents);
$contents =  strip_tags($contents);
$contents str_replace("\r\n"'<ems:br><ems:br>'$contents);
$contents str_replace("\n"'<ems:br><ems:br>'$contents);
$contents str_replace("<ems:br><ems:br><ems:br><ems:br><ems:br><ems:br><ems:br>"'<ems:br><ems:br>'$contents);
$contents str_replace("<ems:br><ems:br><ems:br><ems:br><ems:br><ems:br>"'<ems:br><ems:br>'$contents);
$contents str_replace("<ems:br><ems:br><ems:br><ems:br><ems:br>"'<ems:br><ems:br>'$contents);
$contents str_replace("<ems:br><ems:br><ems:br><ems:br>"'<ems:br><ems:br>'$contents);
$contents str_replace("<ems:br><ems:br><ems:br>"'<ems:br><ems:br>'$contents);

$contents wordwrap($contents,450,"\r\n");
echo 
$contents;   
?>

нужно только сделать, чтобы посты не рвало.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования