Раз пошла пьянка с решениями, то выложу и я свой вариант
$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\>"? И в квадратные скобки точка это обычные символ точки.
Тогда, чтобы не изобретать велосипеды, возьмите любой форум или кмс в которой есть личные сообщения и смотрите какая там используется структура для хранения данных. По ней увидите каким примерно будет дальнейший код этой реализации.
У всех форумов как правило авторизация идет по пост параметрам. Но если вам конфиденциальность до одного места, можете поправить в коде и извлекать данные в том числе и из гет параметров. Типа движка роли не играет.
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$
Значит не правильно указали адрес. Покажите урл.