document.getElementsByTagName("table").length?
Спустя 9 минут, 4 секунды (21.05.2011 - 20:03) Gradus написал(а):
host, а вы сможете описать проблему или цель применения php ?
потому что вопрос мягко говоря безрассудный
потому что вопрос мягко говоря безрассудный
Спустя 5 минут, 2 секунды (21.05.2011 - 20:08) alex12060 написал(а):
О_О
Жесть то какая)
Если я не ошибаюсь, то пхп плохо работает с DOM
а так, посомтри в сторону: sizeof() или strlen()
Жесть то какая)
Если я не ошибаюсь, то пхп плохо работает с DOM
а так, посомтри в сторону: sizeof() или strlen()
Спустя (21.05.2011 - 20:08) host написал(а):
почему безрассурдный?
определить количество таблиц на странице
определить количество таблиц на странице
Спустя 1 минута, 10 секунд (21.05.2011 - 20:09) host написал(а):
я в php плохо разбираюсь
недано js более менее разобрал
недано js более менее разобрал
Спустя 7 минут (21.05.2011 - 20:16) alex12060 написал(а):
Цитата |
определить количество таблиц на странице |
Можно конечно, но это реально дикий изврат получится, и я верен, что ты ничего не поймешь. Ради интереса, сейчас попробую реализовать...
Спустя 2 минуты, 38 секунд (21.05.2011 - 20:19) host написал(а):
на js это нормально, а на php изврат
странновато...
странновато...
Спустя 12 минут, 46 секунд (21.05.2011 - 20:32) alex12060 написал(а):
PHP - серверный язык, JavaScript - клиентский язык.
Если ты не понимаешь что значит клиент, что сервер, то предлагаю поучить эти понятия. PHP работает с сервером в чистом виде, а ЖС - с DOM элементами, т.е со страницами и элементами.
Вот теперь посмотри, я тебе написал скрипт, который покажет кол-во таблиц на странице. Во первых, нужно страницу скачать и пройтись по ней регулярным выражением и уже считать массивы. Это ужас.
Ты почитай про PHP и через пару месяцев открой эту тему и посмейся над своими утверждениями и поставь мне люсик :)
Если ты не понимаешь что значит клиент, что сервер, то предлагаю поучить эти понятия. PHP работает с сервером в чистом виде, а ЖС - с DOM элементами, т.е со страницами и элементами.
Вот теперь посмотри, я тебе написал скрипт, который покажет кол-во таблиц на странице. Во первых, нужно страницу скачать и пройтись по ней регулярным выражением и уже считать массивы. Это ужас.
Ты почитай про PHP и через пару месяцев открой эту тему и посмейся над своими утверждениями и поставь мне люсик :)
<?php
error_reporting(E_ALL);
$text = file_get_contents('http://citforum.ru/internet/html40/struct/tables.html');
//echo $text;
preg_match_all("#<table[^>]+>#i", $text, $res);
$i = 0;
foreach($res as $val) {
if (is_array($val)) $i += sizeof($val);
else
++$i;
}
echo $i;
die();
Спустя 2 минуты, 17 секунд (21.05.2011 - 20:34) Gradus написал(а):
alex12060, вот ты зря так скрипт выдал может он на своей странице хочет посчитать, тогда это вообще ужас собственную страницу парсить да ещё и в рекурсию впадёт надо сначало узнать что нужно от php, что хочет реализовать.
Спустя 1 минута, 51 секунда (21.05.2011 - 20:36) host написал(а):
спс
Спустя 5 секунд (21.05.2011 - 20:36) alex12060 написал(а):
Gradus
определить количество таблиц на странице
Вполне адекватно изложил проблему
определить количество таблиц на странице
Вполне адекватно изложил проблему
Спустя 1 минута, 35 секунд (21.05.2011 - 20:38) alex12060 написал(а):
P.S
Подправил капку свой код.
Подправил капку свой код.
Спустя 1 минута, 4 секунды (21.05.2011 - 20:39) Gradus написал(а):
Цитата |
определить количество таблиц на странице |
на чьей ? тут не указано что на чужой, я подразумеваю сейчас кто-то себя ддосить начнёт
Спустя 4 минуты, 26 секунд (21.05.2011 - 20:43) Greg1978 написал(а):
Формирует страницу не JS а PHP, если это конечно не RC, в самом PHP и можно посчитать например количество элементов в массиве $table и при рендеринге можно указать сие число , просто это будет на уровне формирования html кода на сервере а не рендеринге в браузере. Кстати в PHP есть работа с DOM.
Спустя 1 минута, 29 секунд (21.05.2011 - 20:45) alex12060 написал(а):
Ну блин, по мне, должно быть четкое разделение труда - ЖС -> DOM, PHP -> обработка своего кода. ИМХО
Спустя 5 минут, 19 секунд (21.05.2011 - 20:50) Greg1978 написал(а):
Цитата (alex12060 @ 21.05.2011 - 17:45) |
Ну блин, по мне, должно быть четкое разделение труда - ЖС -> DOM, PHP -> обработка своего кода. ИМХО |
Я то же такого мнения придерживаюсь.
Котлеты отдельно, мухи в другую сторону.
Спустя 9 часов, 53 минуты, 50 секунд (22.05.2011 - 06:44) Invis1ble написал(а):
Конечно же, имхо, лучше считать кол-во таблиц на уровне формирования оных, как уже заметил Greg1978.
Но можно и пропарсить, если нет доступа к скрипту, формирующему вывод. Самый быстрый способ - регуляркой.
Самый "удобный" и "универсальный" (в данном случае, думаю, он совсем не к месту) и, соответственно, неповоротливый - с помощью объекта DOMDocument(), примерно так:
Причем сработает этот способ только если документ валиден ;)
Если взглянуть на объем кода и примерно прикинуть размер потребляемых ресурсов и скорость выполнения думаю становится очевиден тот факт, что регулярки рулят :D
Но можно и пропарсить, если нет доступа к скрипту, формирующему вывод. Самый быстрый способ - регуляркой.
Самый "удобный" и "универсальный" (в данном случае, думаю, он совсем не к месту) и, соответственно, неповоротливый - с помощью объекта DOMDocument(), примерно так:
function iterate($node, &$amount)
{
$tables = $node->getElementsByTagName('table');
$amount += count($tables);
foreach ($tables as $table)
if ($table->hasChildNodes())
iterate($table, $amount);
}
$DOM = new DOMDocument();
if ($DOM->loadHTMLFile($url))
{
$amount = 0;
iterate($DOM, $amount);
echo $amount;
}
else
{
// невалидный документ
}
Причем сработает этот способ только если документ валиден ;)
Если взглянуть на объем кода и примерно прикинуть размер потребляемых ресурсов и скорость выполнения думаю становится очевиден тот факт, что регулярки рулят :D