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

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

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

 

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

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

тема: Обработка текста
 
 автор: Night_Charter   (23.06.2008 в 16:02)   письмо автору
 
 

Здравствуйте, Уважаемы Гуру регулярных выражений!
Реально ли сделать следующее?
Есть текст:

<?php
$text 
"Название: Британские военные автомобили 1939-1945
Автор: Кащеев Л.Б.
Издательство: Кировское общество любителей военной техники и моделизма
Год: 2000
Страниц: 59
Формат: pdf в rar с 3 % на восстановление
Размер: 33.8 MB
Качество: Хорошее
Серия или Выпуск: Военные машины
Военные машины №038 - Британские военные автомобили 1939-1945
Британские вооруженные силы были застигнуты врасплох началом войны в сентябре 1939 г. 
Чтобы достигнуть комплектования своих соединений по штатам военного времени 
потребовалась мобилизация большого числа гражданских машин. Из приблизительно 85.000 
автомобилей на службе Военного ведомства в начале войны, почти третья часть фактически 
была мобилизованными автомобилями"
;
?>

Из всего текста, мне надо вытащить:

<?php
$replace 
"Британские вооруженные силы были застигнуты врасплох началом войны в сентябре 1939 г. 
Чтобы достигнуть комплектования своих соединений по штатам военного времени 
потребовалась мобилизация большого числа гражданских машин. Из приблизительно 85.000 
автомобилей на службе Военного ведомства в начале войны, почти третья часть фактически 
была мобилизованными автомобилями"
;
?>

Т.е. надо взять кусок текста (может обзацами вытащить), обработать его и вернуть на место уже обработаный.
Возможно ил написать такое выражение?
Заранее благодарен. Кому надо смогу скинуть в качестве благодарности парочку wmz :)

   
 
 автор: AcidTrash   (23.06.2008 в 16:25)   письмо автору
 
   для: Night_Charter   (23.06.2008 в 16:02)
 

Может так подойдет, хотя пример мягко сказать не очень, расчитан на много условий для корректной работы.
<?php
$t
='Название: Британские военные автомобили 1939-1945
Автор: Кащеев Л.Б.
Издательство: Кировское общество любителей военной техники и моделизма
Год: 2000
Страниц: 59
Формат: pdf в rar с 3 % на восстановление
Размер: 33.8 MB
Качество: Хорошее
Серия или Выпуск: Военные машины
Военные машины №038 - Британские военные автомобили 1939-1945
Британские вооруженные силы были застигнуты врасплох
 началом войны в сентябре 1939 г. Чтобы достигнуть 
комплектования своих соединений по штатам военного времени 
потребовалась мобилизация большого числа гражданских машин. 
Из приблизительно 85.000 автомобилей на службе Военного 
ведомства в начале войны, почти третья часть фактически 
была мобилизованными автомобилями'
;
$r=explode("\n",$t);
$e=count($r)-1;
print 
$r[$e];
?>

   
 
 автор: Night_Charter   (23.06.2008 в 16:33)   письмо автору
 
   для: AcidTrash   (23.06.2008 в 16:25)
 

Требуется нестандартное решение.
Т.к. абзацев может быть и два, и пять.

   
 
 автор: sim5   (23.06.2008 в 20:58)   письмо автору
 
   для: Night_Charter   (23.06.2008 в 16:33)
 

Только именно из этого текста? Может хватит и такого:
echo substr($text, strpos($text, "№038")+7);

   
 
 автор: Night_Charter   (23.06.2008 в 21:14)   письмо автору
 
   для: sim5   (23.06.2008 в 20:58)
 

Не...не пойдет

   
 
 автор: AcidTrash   (23.06.2008 в 22:00)   письмо автору
 
   для: Night_Charter   (23.06.2008 в 21:14)
 

Скажу так, решение в принципе не возможно, т.к. критериев для выборки нет. Откуда можно узнать, нужна ли эта строка или нет?

   
 
 автор: Night_Charter   (23.06.2008 в 23:55)   письмо автору
 
   для: AcidTrash   (23.06.2008 в 22:00)
 

А такое можно реализовать:
Обрежь все после последнего вхождения "Бла-бла: бла-бла\n"?

   
 
 автор: exp   (24.06.2008 в 00:10)   письмо автору
 
   для: AcidTrash   (23.06.2008 в 22:00)
 

что-то похожее на это
<pre><?php
$text 
"Название: Британские военные автомобили 1939-1945 
Автор: Кащеев Л.Б.
Издательство: Кировское общество любителей военной техники и моделизма
Год: 2000 
Страниц: 59 
Формат: pdf в rar с 3 % на восстановление 
Размер: 33.8 MB 
Качество: Хорошее 
Серия или Выпуск: Военные машины 
Военные машины №038 - Британские военные автомобили 1939-1945 
Британские вооруженные силы были застигнуты врасплох началом войны в сентябре 1939 г.  
Чтобы достигнуть комплектования своих соединений по штатам военного времени  
потребовалась мобилизация большого числа гражданских машин. Из приблизительно 85.000  
автомобилей на службе Военного ведомства в начале войны, почти третья часть фактически  
была мобилизованными автомобилями"


echo 
$text preg_replace('#^(?:Название:|Автор:|Издательство:|Год:|Страниц:|Формат:|Размер:|Качество:|(Серия или Выпуск:)).*$(?:\r?\n)*(?(1)^.*$(?:\r?\n)*)#m'''$text10);
?>
</pre>

будет работать если (Серия или Выпуск:) всегда из двух строк, или дальше в тексте небудет одного из этих слов с двоеточием при колличестве совпадений меньшем 4го параметра preg_replace()

   
 
 автор: ЯR   (24.06.2008 в 00:21)   письмо автору
 
   для: Night_Charter   (23.06.2008 в 16:02)
 

может че-нить типа этого подойдет (не тестировал, может и не сработает)?

$text = preg_replace("/^.*\n[^\n]+:[^\n]+\n([^:]+(?:\n.*)?)$/isU", '$1', $text);

   
 
 автор: Night_Charter   (24.06.2008 в 03:15)   письмо автору
 
   для: ЯR   (24.06.2008 в 00:21)
 

Все не то, господа(
У кого еще идеи есть

   
 
 автор: exp   (24.06.2008 в 04:18)   письмо автору
 
   для: Night_Charter   (24.06.2008 в 03:15)
 

> Обрежь все после последнего вхождения "Бла-бла: бла-бла\n"


<pre><?php
$text 
"Чтобы достигнуть  
Бла-бла: бла-бла\n комплектования своих
Бла-бла: бла-бла\n соединений по штатам военного времени   
потребовалась 
Бла-бла: бла-бла\n мобилизация большого числа гражданских машин. Из приблизительно 85.000   
автомобилей на службе 
Бла-бла: бла-бла\n Военного ведомства в начале 
Бла-бла: бла-бла\n войны, почти третья часть фактически   
была мобилизованными Бла-бла: бла-бла\n автомобилями
"
;  

preg_match('#.*^[А-ЯЁ](?:\w+(?: |\-)?){1,3}:.*?$(.*)#ms'$text$text);
print_r($text=$text[1]);
?>


</pre>

   
Rambler's Top100
вверх

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