|
|
|
| Здравствуйте, Уважаемы Гуру регулярных выражений!
Реально ли сделать следующее?
Есть текст:
<?php
$text = "Название: Британские военные автомобили 1939-1945
Автор: Кащеев Л.Б.
Издательство: Кировское общество любителей военной техники и моделизма
Год: 2000
Страниц: 59
Формат: pdf в rar с 3 % на восстановление
Размер: 33.8 MB
Качество: Хорошее
Серия или Выпуск: Военные машины
Военные машины №038 - Британские военные автомобили 1939-1945
Британские вооруженные силы были застигнуты врасплох началом войны в сентябре 1939 г.
Чтобы достигнуть комплектования своих соединений по штатам военного времени
потребовалась мобилизация большого числа гражданских машин. Из приблизительно 85.000
автомобилей на службе Военного ведомства в начале войны, почти третья часть фактически
была мобилизованными автомобилями";
?>
|
Из всего текста, мне надо вытащить:
<?php
$replace = "Британские вооруженные силы были застигнуты врасплох началом войны в сентябре 1939 г.
Чтобы достигнуть комплектования своих соединений по штатам военного времени
потребовалась мобилизация большого числа гражданских машин. Из приблизительно 85.000
автомобилей на службе Военного ведомства в начале войны, почти третья часть фактически
была мобилизованными автомобилями";
?>
|
Т.е. надо взять кусок текста (может обзацами вытащить), обработать его и вернуть на место уже обработаный.
Возможно ил написать такое выражение?
Заранее благодарен. Кому надо смогу скинуть в качестве благодарности парочку wmz :) | |
|
|
|
|
|
|
|
для: 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];
?>
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(23.06.2008 в 16:25)
| | Требуется нестандартное решение.
Т.к. абзацев может быть и два, и пять. | |
|
|
|
|
|
|
|
для: Night_Charter
(23.06.2008 в 16:33)
| | Только именно из этого текста? Может хватит и такого:
echo substr($text, strpos($text, "№038")+7); | |
|
|
|
|
|
|
|
для: sim5
(23.06.2008 в 20:58)
| | Не...не пойдет | |
|
|
|
|
|
|
|
для: Night_Charter
(23.06.2008 в 21:14)
| | Скажу так, решение в принципе не возможно, т.к. критериев для выборки нет. Откуда можно узнать, нужна ли эта строка или нет? | |
|
|
|
|
|
|
|
для: AcidTrash
(23.06.2008 в 22:00)
| | А такое можно реализовать:
Обрежь все после последнего вхождения "Бла-бла: бла-бла\n"? | |
|
|
|
|
|
|
|
для: 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', '', $text, 10);
?>
</pre>
|
будет работать если (Серия или Выпуск:) всегда из двух строк, или дальше в тексте небудет одного из этих слов с двоеточием при колличестве совпадений меньшем 4го параметра preg_replace() | |
|
|
|
|
|
|
|
для: Night_Charter
(23.06.2008 в 16:02)
| | может че-нить типа этого подойдет (не тестировал, может и не сработает)?
$text = preg_replace("/^.*\n[^\n]+:[^\n]+\n([^:]+(?:\n.*)?)$/isU", '$1', $text);
|
| |
|
|
|
|
|
|
|
для: ЯR
(24.06.2008 в 00:21)
| | Все не то, господа(
У кого еще идеи есть | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|