siv1987

siv1987
Рейтинг
427
Регистрация
02.04.2009

Раз пошла пьянка с решениями, то выложу и я свой вариант


$html = file_get_contents('http://finance.yahoo.com/q/op?s=GDX');
$doc = new DOMDocument();
$doc->strictErrorChecking = false;
@$doc->loadHTML($html);

$table = $doc->getElementsByTagName('table');
$result = array();

foreach(array(1,2) as $n){
$tab = $table->item($n);
$ths = $tab->getElementsByTagName('thead')->item(0);
$ths = $ths->getElementsByTagName('th');

$type = $tab->getElementsByTagName('caption')->item(0)->textContent;
$type = trim($type);
$cell = array();

foreach($ths as $th){
$attr = $th->getAttribute('class');
$column = preg_match('/column-(\S+)/', $attr, $m) ? $m[1] : '';
$cell[] = $column;
}

$tbody = $tab->getElementsByTagName('tbody')->item(0);
$trs = $tbody->getElementsByTagName('tr');

foreach($trs as $tr){
$tds = $tr->getElementsByTagName('td');
$row = array();

foreach($tds as $td){
$row[] = trim($td->textContent);
}

$result[ $type ][] = array_combine($cell, $row);
}
}

print_r($result);

Result:


Array
(
[Calls] => Array
(
[0] => Array
(
[strike] => 8.00
[contractName] => GDX150320C00008000
[last] => 14.50
[bid] => 9.65
[ask] => 10.30
[change] => 0.00
[percentChange] => 0.00%
[volume] => 10
[openInterest] => 5
[impliedVolatility] => 453.13%
)

[1] => Array
(
[strike] => 11.00
[contractName] => GDX150320C00011000
[last] => 7.15
[bid] => 6.50
[ask] => 7.30
[change] => 0.00
[percentChange] => 0.00%
[volume] => 1
[openInterest] => 1
[impliedVolatility] => 297.66%
)
....
[Puts] => Array
(
[0] => Array
(
[strike] => 10.00
[contractName] => GDX150320P00010000
[last] => 0.01
[bid] => 0.00
[ask] => 0.02
[change] => 0.00
[percentChange] => 0.00%
[volume] => 37
[openInterest] => 4
[impliedVolatility] => 212.50%
)

[1] => Array
(
[strike] => 11.00
[contractName] => GDX150320P00011000
[last] => 0.01
[bid] => 0.00
[ask] => 0.02
[change] => 0.00
[percentChange] => 0.00%
[volume] => 3
[openInterest] => 0
[impliedVolatility] => 181.25%
)

[2] => Array
(
[strike] => 12.00
[contractName] => GDX150320P00012000
[last] => 0.03
[bid] => 0.00
[ask] => 0.02
[change] => 0.00
[percentChange] => 0.00%
[volume] => 2
[openInterest] => 2
[impliedVolatility] => 153.13%
)

Может быть. Точка не соответствует переводам строк без модификатора шаблона s. Кроме того, что-то никаких квантификаторов у вас не видно, что, здесь только один символ "\<.\<\/tr\>"? И в квадратные скобки точка это обычные символ точки.

mortido:
в том то и дело, что пока никак не идентифицирую)

Тогда, чтобы не изобретать велосипеды, возьмите любой форум или кмс в которой есть личные сообщения и смотрите какая там используется структура для хранения данных. По ней увидите каким примерно будет дальнейший код этой реализации.

У всех форумов как правило авторизация идет по пост параметрам. Но если вам конфиденциальность до одного места, можете поправить в коде и извлекать данные в том числе и из гет параметров. Типа движка роли не играет.

djdiplomat:
Но там почему то ВСЕГДА значение value дефолтное, не то, что я только что ввел в форму... вот в чем проблема.

https://jsfiddle.net/sbcemzay/ я вижу что все работает, и никаких проблем с дефолтным значением нету.

Это не самое страшное. ТС, вы знаете что decimal separator может быть разный в зависимости от локали?

Параметры запроса сравниваются по QUERY_STRING, притом переменная содержит исключительно строку запроса.

%{REQUEST_URI}?%{QUERY_STRING} !/publ1\.php\?type=public&item=1$

Потому что это ссылка к этому исключению не имеет никакого отношения. Там явно указан какой адрес исключить. Для других адресов нужно писать другие правила.

правило работает одинаково верно в обоих случаях

В случае с роботс это файл. В вашем примере я файла не вижу, чпу нужно проверять через request_uri.

И не будет работать. Вам уже подсказали как нужно.

---------- Добавлено 15.03.2015 в 14:32 ----------

RewriteCond %{REQUEST_URI} !/public/item1$

Значит не правильно указали адрес. Покажите урл.

Всего: 6568