Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Анализ без ДОМа

8.8K
29 октября 2006 года
Alximik
95 / / 24.10.2006
Короче проблема такая. Нужно вырвать значение нужных тегов БЕЗ использования ДОМ (на серве стоит php 4.4).

Может я чето не так делаю?
Ну вообщем скажу шо надо.
Выделить значения между всеми тегами <table>ЗНАЧЕНИЕ</table> на странице по адрессу $adress. :o
2.8K
29 октября 2006 года
Unglued
119 / / 15.09.2005
Почему дом низя?
17K
30 октября 2006 года
SuhOFF
24 / / 27.09.2006
Если я правильно понял, то нужно использовать регулярные выражения
2.8K
30 октября 2006 года
Unglued
119 / / 15.09.2005
Например такое <table>(.*)<\/table>
8.8K
30 октября 2006 года
Alximik
95 / / 24.10.2006
[QUOTE=Unglued]Например такое <table>(.*)<\/table>[/QUOTE]
Я так и делал, не работает чето. ТОчнее так
preg_match('/<table(.*)<\/table>/isU', $ftext, $farray);
Вот
8
30 октября 2006 года
mfender
3.5K / / 15.06.2005
[QUOTE=Alximik]Я так и делал, не работает чето. ТОчнее так
preg_match('/<table(.*)<\/table>/isU', $ftext, $farray);
Вот[/QUOTE]
1. У тебя стоит s в модификаторах. Это не есть хорошо. Нужно m.
2. Использовать следует preg_match_all();
3. Всё-равно ничего не получится, т.к. тебе будет всегда возвращаться $array[0][1] то, что находится между первым <table и последним </table>.
8.8K
30 октября 2006 года
Alximik
95 / / 24.10.2006
[QUOTE=mfender]1. У тебя стоит s в модификаторах. Это не есть хорошо. Нужно m.
2. Использовать следует preg_match_all();
3. Всё-равно ничего не получится, т.к. тебе будет всегда возвращаться $array[0][1] то, что находится между первым <table и последним </table>.[/QUOTE]
А как тогда прально?
15
30 октября 2006 года
shaelf
2.7K / / 04.05.2005
2Alximik на 4 есть свой обработчик DOM'a. Если он не стоит, то попроси хостера.
8
31 октября 2006 года
mfender
3.5K / / 15.06.2005
[QUOTE=Alximik]А как тогда прально?[/QUOTE]
Правильно - использовать DOM.
8.8K
31 октября 2006 года
Alximik
95 / / 24.10.2006
[QUOTE=mfender]Правильно - использовать DOM.[/QUOTE]
Все договолся с держателем серва. Но факт в том, шо не пашет такая вот штука
Код:
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.')');
    }
}


Мож кто объяснит где я ошибся?
8
31 октября 2006 года
mfender
3.5K / / 15.06.2005
Версия PHP какая? Это для PHP5. Для PHP4 существует DOMXML
2.8K
31 октября 2006 года
Unglued
119 / / 15.09.2005
если тебе нужно что-то между дескриптерами <table>, то и вбирай дочерний по отношениюк дескриптору а не его самго
8
31 октября 2006 года
mfender
3.5K / / 15.06.2005
Цитата:

[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(), чтобы лучше осознавать, что делаешь. Ну и мануалы читай тоже. Там, кстати, всё по-русски хоорошо написано.

8.8K
31 октября 2006 года
Alximik
95 / / 24.10.2006
[QUOTE=mfender]Это ввыражение должно возвращать объект DOMNoneList. Это объект. Используй var_dump(), чтобы лучше осознавать, что делаешь. Ну и мануалы читай тоже. Там, кстати, всё по-русски хоорошо написано.[/QUOTE]
Адрес TFM в студию :) А вообще разе с DOMNodeList нельзя работать, как с массивом объектов DOMNode
8
31 октября 2006 года
mfender
3.5K / / 15.06.2005
[quote=Alximik]Адрес TFM в студию :) А вообще разе с DOMNodeList нельзя работать, как с массивом объектов DOMNode[/quote]
Можно. Но это функция. А у тебя он этот 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";
}
8.8K
31 октября 2006 года
Alximik
95 / / 24.10.2006
[QUOTE=mfender]Можно. Но это функция. А у тебя он этот 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";
}
[/QUOTE]
Респект.

ЗЫ насчет мануала именно по нему я и пытался вьехать в ДОМФункции. Видимо не вьехал :(
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог