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

Форум Регулярные Выражения

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

 

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

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

тема: Как удалить не полностью повторяющийся текст?
 
 автор: Владимир55   (06.02.2011 в 20:02)   письмо автору
 
 

В тексте много раз повторяется конструкция, которую желательно удалить в автоматическом режиме. Но пока что не придумаю, как это сделать.

Представить эту конструкцию можно так:

35.943 I. всякие слова РЕПЕР другие слова, 12287 


То есть, имеется некое реперное слово, присутствующее в каждой фразе, которую нужно удалить.
Слева от репера имеются какие-то слова, везде разные, а еще левеее некое число.
Справа от репера другие слова, а еще правее другое число.

И требуется удалить оба этих числа и ВСЕ, что между ними.

Как бы это осуществить?

  Ответить  
 
 автор: cheops   (06.02.2011 в 20:04)   письмо автору
 
   для: Владимир55   (06.02.2011 в 20:02)
 

1) Это одна строка или "всякие слова" и "другие слова" содержат переводы строк?
2) Содержат ли "всякие слова" и "другие слова" цифры?

  Ответить  
 
 автор: Владимир55   (06.02.2011 в 20:30)   письмо автору
 
   для: cheops   (06.02.2011 в 20:04)
 

Это одна строка. Переводов строк нет нигде - все через пробел...

Но и цифры только там, где они обозначены на примере (по краям).

  Ответить  
 
 автор: cheops   (06.02.2011 в 20:37)   письмо автору
 
   для: Владимир55   (06.02.2011 в 20:30)
 

Можно начать отталкивать от следующего скрипта
<?php
  $text 
'Представить эту конструкцию можно так:
35.943 I. всякие слова РЕПЕР другие слова, 12287
То есть, имеется некое реперное слово, присутствующее в каждой фразе, которую нужно удалить.
35.943 I. всякие слова РЕПЕР другие слова, 12287
Слева от репера имеются какие-то слова, везде разные, а еще левеее некое число.
35.943 I. всякие слова РЕПЕР другие слова, 12287
Справа от репера другие слова, а еще правее другое число.'
;
  
$pattern "|\d+\.\d+[^\d]+".preg_quote("РЕПЕР")."[^\d]+\d+\r\n|is";
  
$text preg_replace($pattern""$text);
  echo 
nl2br($text);
?>

  Ответить  
 
 автор: Владимир55   (06.02.2011 в 20:59)   письмо автору
76 байт
 
   для: cheops   (06.02.2011 в 20:37)
 

Что-то не сработало...

В Приложении кусочек текстового файла. Удаляться должно все между словом "элемент" и словом "мистики".

Реперным словом является "Милашин".

  Ответить  
 
 автор: cheops   (06.02.2011 в 21:25)   письмо автору
 
   для: Владимир55   (06.02.2011 в 20:59)
 

Ясно, поправьте регулярное выражение следующим образом
<?php
  $pattern 
"|\d+\.\d+[^\d]+РЕПЕР[^\d]+\d+|is";
?>

  Ответить  
 
 автор: Владимир55   (06.02.2011 в 21:38)   письмо автору
 
   для: cheops   (06.02.2011 в 21:25)
 

Спасибо, замечательно получилось!

  Ответить  
Rambler's Top100
вверх

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