|
|
|
| Задача вроде как бы простая, но как реализовать даже незнаю. Допустим есть текст. В нём 10 000 строк.
$text = "
Строка 1
Строка 2
Строка 3
...
Строка 5 500
...
Строка 6 000
...
Строка 10 000";
Мне нужно вывести из преременной $text строки только от 5 500 до 6 000.
Смысл такой, я хачу понять как регулярные выражения работают с "нумерацией строк". | |
|
|
|
|
|
|
|
для: PROUser
(27.08.2008 в 11:21)
| | Можно воспользоваться следующим регулярным выражением
<?php
$text = "
Строка 1
Строка 2
Строка 3
...
Строка 5 500
...
Строка 6 000
...
Строка 10 000";
$pattern = "#([\d ]+)([\r\n]+|$)#is";
preg_match_all($pattern, $text, $out);
echo "<pre>";
echo print_r($out[1]);
echo "</pre>";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(27.08.2008 в 11:31)
| | Данное выражение даёт такой результат:
>Array
>(
> [0] => 1
> [1] => 2
> [2] => 3
> [3] => 5 500
> [4] => 6 000
> [5] => 10 000
>)
>1
Может мы друг друга не поняли. В строчках может быть разная тексто-цифровая информация. И мне нужно организовать вывод определённых строк (их содержание). От строки X до строки Y.
Ещё раз.
<? $text = "папа
мама
я
дружная
семья";
?>
|
Задача вывести в браузер только строки со 2-ой по 4-тую.
Т.е. результат должен быть примерно таким:
мама
я
дружная | |
|
|
|
|
|
|
|
для: PROUser
(27.08.2008 в 12:11)
| | Можно поступить следующим образом
<?php
$text = "папа
мама
я
дружная
семья";
$fst = 2;
$end = 4;
// Разбиваем строку на отдельную подстроку
$arr = preg_split("|[\r\n]+|", $text);
// Выводим строки
for($i = 1; $i <= count($arr); $i++)
{
// Пропускаем лишние строки
if($i < $fst || $i > $end) continue;
else echo $arr[$i - 1]."<br>";
}
?>
|
| |
|
|
|
|
|
|
|
для: PROUser
(27.08.2008 в 12:11)
| | можно ещё попробовать так
<?
$text = 'папа,
мама,
я
--
"дружная
семья"
.
';
preg_match('#(?:[^\n]*\n){2}((?:[^\n]*\n){4})#', $text, $out);
echo $out[1];
|
| |
|
|
|
|
|
|
|
для: xx77
(27.08.2008 в 23:03)
| | Всем за помощь огромное спасибо! Пошел использовать полученные знания! | |
|
|
|