выборка из файла

FlaMen

Новичок
выборка из файла

к примеру есть hrml'ка
-----
<html>
<head>
<title>
DOC</title>
</head>
<p align="justify">Для записи в файл предназначены методы
Write и WriteHuge. В 32-разрядных операционных
системах оба метода могут одновременно
записывать в файл больше 65535 байт. Методы
записывает в открытый файл nCount байт из
буфера lpBuf. В случае возникновения
ошибки записи, например переполнения
диска, методы вызывает обработку
исключения.</p>

</body>
</html>
----------

мы его открываем считываем в массив, но нам нужно получить две перменные, с данными которые находятся между <title> </title>, и <p align="justify"> </p>



Бросте наброски кода плз... или поясните как это сделать.
 

LAMborginy

Guest
PHP:
pger_match("%\<TITLE\>(.*)\<\/TITLE\>.*\<P align=\"justify\"\>(.*)\<\/P\>%i",$page,$arr);
print_r($arr);
 

FlaMen

Новичок
ок. спасибо...
еще скажи плз что означает:

%\
.*\
%i

И где найти мануал по синтаксису рег. выражений...
снк.
 

netdog

net @
Налепил же слешей...
PHP:
preg_match("%<title>(.*)</title>.*<p align=\"justify\">(.*)</p>%si",$page,$arr);
print_r($arr);

И где найти мануал по синтаксису рег. выражений...
http://www.php.net/manual/ru/pcre.pattern.syntax.php
http://www.google.com
 

netdog

net @
p.s.
Это модификаторы:
s - dot (точка) соответствует всем символам, включая символы новой строки
i - регистронезависимый паттерн


http://www.php.net/manual/ru/pcre.pattern.modifiers.php
 

mirk

Guest
Вопрос в тему:

Есть страница
<a hre="zzzzz" class=zzzzz name=1 title="1">1</a>
<a hre="zzzzz" class=zzzzz name=2 title="2">2</a>
<a hre="zzzzz" class=zzzzz name=3 title="3">3</a>
<a hre="zzzzz" class=zzzzz name=4 title="4">4</a>
И еще куча ненужного текста.

Как оттуда вытащить ссылки, это понятно,

preg_match("%<a href=\"(.*)\" class=(.*) title=\"(.*)\" name=(.*)>(.*)</a>%si",$contents,$arr);

но как вывести их в нижеуказанном виде, этого я понять не могу:

<a hre="#1" class=zzzzz title="1">1</a>
<a hre="#2" class=zzzzz title="2">2</a>
<a hre="#3" class=zzzzz title="3">3</a>
<a hre="#4" class=zzzzz title="4">4</a>

Поможите плиз чайнику :)
 

Фанат

oncle terrible
Команда форума
тебе знакомы такие понятия, как цикл и массив?
 

fixxxer

К.О.
Партнер клуба
в данном случае IMHO уместнее preg_replace_callback.
Или preg_replace с модификатором e.
 

Фанат

oncle terrible
Команда форума
у тебя имеется двумерный массив $arr
ты можешь в цикле перебрать его, и в нем сформировать нужную строку из элементов массивов второго уровня.
 

fixxxer

К.О.
Партнер клуба
Для начала попробуй вместо preg_match использовать preg_match_all и написать модификатор U после конечного процентика... Тогда в $arr будет то, что тебе окажется вполне удобно разобрать в цикле. :)
 

mirk

Guest
Странно, перебираю так, выводит Array[0] и т.д.

preg_match_all("|<+a href=\"(.*)\" class=(.*) title=\"(.*)\"+>(.*)<+/a+>|U",$contents,$arr, PREG_PATTERN_ORDER);
for ($q = 0; $q<=count($arr); $q++) {
print "<br>$arr[0][$q]<br>";
}
Где ошибка?

А когда так : print "<br>$arr[0][1]<br>";, то все нормально.
 

Yuriy_S

-=PHP-Club=-
сделай print_r($arr);
и посмотри как у тебя выглядит массив, а затем выводи правильно.
 

mirk

Guest
Вывожу так:

for ($q = 0; $q<=count($arr); $q++) {
echo $arr[0][$q]."<br>";
}

ссылки выводит без проблем, но как мне вывести в таком виде:

<a hre="#1" class=zzzzz title="1">1</a>

Поможите плиз
 

fixxxer

К.О.
Партнер клуба
А) Сделать print_r($arr), посмотреть на ненулевые элементы двумерного массива, и использовать их значение для формирования ссылок
Б) посмотреть мой пост от 18.12.03 01:44
 

mirk

Guest
Разобрался

for ($q = 0; $q<=count($arr); $q++) {
$navRazdel = "<a href=\"$PHP_SELF#".$arr[4][$q]."\" title=\"".$arr[5][$q]."\" class=link_bold>".$arr[5][$q]."</a>"."<br>";
}

Спасибо.

Тогда еще вопрос:

Этот код будет обрабатывать все страницы на моем сайте. Т.е. при формировании страницы, он обрабатывает текст, и выводит результаты, в отдельную таблицу.
Как вы думаете, тормоза будут?
 
Сверху