Анализ без ДОМа
Может я чето не так делаю?
Ну вообщем скажу шо надо.
Выделить значения между всеми тегами <table>ЗНАЧЕНИЕ</table> на странице по адрессу $adress. :o
Почему дом низя?
Если я правильно понял, то нужно использовать регулярные выражения
Например такое <table>(.*)<\/table>
Я так и делал, не работает чето. ТОчнее так
preg_match('/<table(.*)<\/table>/isU', $ftext, $farray);
Вот
preg_match('/<table(.*)<\/table>/isU', $ftext, $farray);
Вот[/QUOTE]
1. У тебя стоит s в модификаторах. Это не есть хорошо. Нужно m.
2. Использовать следует preg_match_all();
3. Всё-равно ничего не получится, т.к. тебе будет всегда возвращаться $array[0][1] то, что находится между первым <table и последним </table>.
2. Использовать следует preg_match_all();
3. Всё-равно ничего не получится, т.к. тебе будет всегда возвращаться $array[0][1] то, что находится между первым <table и последним </table>.[/QUOTE]
А как тогда прально?
2Alximik на 4 есть свой обработчик DOM'a. Если он не стоит, то попроси хостера.
Правильно - использовать DOM.
Все договолся с держателем серва. Но факт в том, шо не пашет такая вот штука
Код:
for($i=1; $i<count($title_arr); $i++){
//Обрубаем все лишнее
$ftext = new DOMDocument();
@$ftext->loadHTML(file_get_contents($link_arr[$i]));
$ftext->getElementsByTagName('table');
$ftext = $ftext[25];
//Здесь $ftext = '' почмуто
preg_match('/<td(.*)<\/td>/i', $ftext, $ftext);
$ftext = $ftext[1];
if ($ftext != ''){
//Вставка записи в БД
mysql_query('INSERT INTO archive (rss_id, title, description, content) VALUES ('.$id.','.$title_arr[$i+1].','.$description_arr[1].','.$ftext.')');
}
}
//Обрубаем все лишнее
$ftext = new DOMDocument();
@$ftext->loadHTML(file_get_contents($link_arr[$i]));
$ftext->getElementsByTagName('table');
$ftext = $ftext[25];
//Здесь $ftext = '' почмуто
preg_match('/<td(.*)<\/td>/i', $ftext, $ftext);
$ftext = $ftext[1];
if ($ftext != ''){
//Вставка записи в БД
mysql_query('INSERT INTO archive (rss_id, title, description, content) VALUES ('.$id.','.$title_arr[$i+1].','.$description_arr[1].','.$ftext.')');
}
}
Мож кто объяснит где я ошибся?
Версия PHP какая? Это для PHP5. Для PHP4 существует
если тебе нужно что-то между дескриптерами <table>, то и вбирай дочерний по отношениюк дескриптору а не его самго
Цитата:
[COLOR=#007700] [/COLOR][COLOR=#0000bb]$ftext[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000bb]getElementsByTagName[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]'table'[/COLOR][COLOR=#007700]);
[/COLOR]
Это ввыражение должно возвращать объект DOMNoneList. Это объект. Используй var_dump(), чтобы лучше осознавать, что делаешь. Ну и мануалы читай тоже. Там, кстати, всё по-русски хоорошо написано.
Адрес TFM в студию :) А вообще разе с DOMNodeList нельзя работать, как с массивом объектов DOMNode
Можно. Но это функция. А у тебя он этот List ничему не присваивается.
http://ru2.php.net/manual/ru/ref.dom.php - читай тут.
Там есть знатный пример:
Код:
$items = $doc->getElementsByTagName('entry');
for ($i = 0; $i < $items->length; $i++) {
echo $items->item($i)->nodeValue . "\n";
}
for ($i = 0; $i < $items->length; $i++) {
echo $items->item($i)->nodeValue . "\n";
}
http://ru2.php.net/manual/ru/ref.dom.php - читай тут.
Там есть знатный пример:
Код:
$items = $doc->getElementsByTagName('entry');
for ($i = 0; $i < $items->length; $i++) {
echo $items->item($i)->nodeValue . "\n";
}
for ($i = 0; $i < $items->length; $i++) {
echo $items->item($i)->nodeValue . "\n";
}
Респект.
ЗЫ насчет мануала именно по нему я и пытался вьехать в ДОМФункции. Видимо не вьехал :(