|
|
|
| Здраствуйте,
Как можно выдернуть информацию со странички, на которой расположена такая таблица:
<table cellspacing="1" cellpadding="2" border="0" style="font-size:10px; font-family:Tahoma;">
<tr bgcolor="#657FAB" style="color:#FFFFFF; font-size:10px; font-weight:bold; font-family:Tahoma;">
<td colspan="2" align="center">Символ</td>
<td align="center">Значение 1</td>
<td align="center">Значение 2</td>
</tr>
<tr bgcolor="#EAEBEE" class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">EURUSD</td>
<td width="40" align="right"><div class="down">1.2994</div></td>
<td width="40" align="right"><div class="down">1.2996</div></td>
</tr>
<tr class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">USDCHF</td>
<td width="40" align="right"><div class="down">1.2419</div></td>
<td width="40" align="right"><div class="down">1.2423</div></td>
</tr>
<tr bgcolor="#EAEBEE" class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">USDJPY</td>
<td width="40" align="right"><div class="down">119.18</div></td>
<td width="40" align="right"><div class="down">119.21</div></td>
</tr>
<tr class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">GBPUSD</td>
<td width="40" align="right"><div class="down">1.9384</div></td>
<td width="40" align="right"><div class="down">1.9388</div></td>
</tr></table>
|
Из этой таблицы мне нужны цифры, расположенные в ячейках Значение 1 и Значение 2
Помогите пожалуйста, привидите какой нибудь пример, я попросту не имел с этим делов, и не знаю даже с какой стороны подойти :( | |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 14:37)
| | не тестил
(<td align=\"center\">)+[.]*(</td>)+ | |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 14:37)
| | И еще, как мне эти значения потом в переменные запихнуть, для дальнейшего отображения уже в другом месте?
Это правильно??
<?
$stranica= '<table cellspacing="1" .. </td></tr></table> ';
preg_match("<td align=\"center\">)+[.]*(</td>)+", $stranica, $znach_1);
echo $znach_1;
?>
|
| |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 15:29)
| | Потестил что выше написал, у меня на страничке появляется только слово Array
Я сделал так:
...
echo $znach_1[1];
...
|
Но так, опять ничего не выводит, спасите :) | |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 15:37)
| | Попробуйте тек:
preg_match_all('#<td align="center">(.*?)</td>#s', $stranica, $znach_1);
unset($znach_1[0]);
echo "<pre>";
print_r($znach_1);
|
| |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 14:37)
| | Ничего не выходит, мужики, я наверное неправильно вопрос поставил, мне нужны значения из ячейки EURUSD, к нему привязаны два цифровых знач. - это (1.2994 и 1.2996), вот они то мне и нужны, но потом нужно их запихнуть в переменные, например такие eurusd_1 и eurusd_2 для дальнейшего использования.
Такое вообще возможно?? | |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 14:37)
| | Вообщем сделал так, но здесь я убрал контейнеры <div></di> потому что не знаю как их обработать рег. выражениями, обьясните.
<?
$stranica = '<table cellspacing="1" cellpadding="2" border="0" style="font-size:10px; font-family:Tahoma;">
<tr bgcolor="#657FAB" style="color:#FFFFFF; font-size:10px; font-weight:bold; font-family:Tahoma;">
<td colspan="2" align="center">Символ</td>
<td align="center">Значение 1</td>
</tr>
<tr bgcolor="#EAEBEE" class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">EURUSD</td>
<td width="40" align="right">1.2994</td>
</tr>
<tr class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">USDCHF</td>
<td width="40" align="right"><div class="down">1.2419</div></td>
<td width="40" align="right"><div class="down">1.2423</div></td>
</tr>
<tr bgcolor="#EAEBEE" class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">USDJPY</td>
<td width="40" align="right"><div class="down">119.18</div></td>
<td width="40" align="right"><div class="down">119.21</div></td>
</tr>
<tr class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">GBPUSD</td>
<td width="40" align="right"><div class="down">1.9384</div></td>
<td width="40" align="right"><div class="down">1.9388</div></td>
</tr></table>';
preg_match_all('#EURUSD</td>[^>]+>(.*?)</td>#s', $stranica, $znach_1);
unset($znach_1[0]);
echo "<pre>";
print_r($znach_1);
?>
|
Вообщем результат сего следующий, на экран выводится вот что:
Array
(
[1] => Array
(
[0] => 1.2994
)
)
Т.е. значение то есть, но зачем эти скобки и все остальное вылазиет? | |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 16:53)
| | print_r выводит массив ... чтобы вывести конкретный элемент массива можно использовать
| |
|
|
|
|
|
|
|
для: kasmanaft
(10.01.2007 в 17:08)
| | Вот работает.
<?
if (preg_match("/((<td align=\"center\">){1})(.*)((<\/td>
<td align=\"center\">){1})(.*)((<\/td>){1})/i",$text,$result))
{
echo $result[3]."<br>".$result[6];
}
?>
|
| |
|
|
|
|
|
|
|
для: Гость
(10.01.2007 в 17:21)
| | PS: $text=этой форме.
Все разбивается на массивы в 3 - значение 1, в 6-ом - значение 2-ва. | |
|
|
|
|
|
|
|
для: kasmanaft
(10.01.2007 в 17:08)
| | Спасибо kasmanaft , я попросту тока первый день в этом деле :-)
Теперь вот что:
1. Что отвечает в рег. выражения за то, чтобы не учитывалось вот это: <div class="down"> .. <div class="up">??
2. Значение 1.2994 я выдернул (вернее Вы :-)), но как выдернуть второе значение 1.2996, то которое в следующей ячейке??
Я попробовал так, но у меня ничего не вышло, опять прошу помощи
<?
$stranica = '<table cellspacing="1" cellpadding="2" border="0" style="font-size:10px; font-family:Tahoma;">
<tr bgcolor="#657FAB" style="color:#FFFFFF; font-size:10px; font-weight:bold; font-family:Tahoma;">
<td colspan="2" align="center">Символ</td>
<td align="center">Значение 1</td>
<td align="center">Значение 2</td>
</tr>
<tr bgcolor="#EAEBEE" class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">EURUSD</td>
<td width="40" align="right"><div class="down">1.2994</div></td>
<td width="40" align="right"><div class="up">1.2996</div></td>
</tr>
<tr class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">USDCHF</td>
<td width="40" align="right"><div class="up">1.2419</div></td>
<td width="40" align="right"><div class="down">1.2423</div></td>
</tr></tr></table>';
preg_match_all('#EURUSD</td>[^>]+>(.*?)</td>#s', $stranica, $EURUSD_1);
unset($EURUSD_1[0]);
echo "<pre>";
echo $EURUSD_1[1][0];
preg_match_all('#EURUSD</td><td width="40" align="right"></td>[^>]+>(.*?)</td>#s', $stranica, $EURUSD_2);
unset($EURUSD_2[0]);
echo "<pre>";
echo $EURUSD_2[1][0];
?>
|
| |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 17:46)
| | . | |
|
|
|
|
|
|
|
для: Гость
(10.01.2007 в 17:55)
| | Да большое спасибо, но наверное вы меня не так поняли, вернее я не так вопрос поставил сразу :-(
Вообщем так, мне нужно выдернуть отсюда два числа (тут это: 1.2961 и 1.2963),
==============================================================
<td width="50"><div class="down">EURUSD</td> |
<td width="40" align="right"><div class="down">1.2961</div></td> |
<td width="40" align="right"><div class="down">1.2963</div></td> |
==============================================================
заведомо неизвестных, но так чтобы они в соотвествии с символом находились в таких переменных: $EURUSD_1 и $EURUSD_2, т.е.: $EURUSD_1=1.2961, а $EURUSD_2=1.2963
и так далее со всеми символами (я просто сократил табличку), дальше идет USDCHF, с ним нужно проделать тоже самое USDCHF_1=1.2448, а USDCHF_2=1.2452, но это я уже сам сделал бы, мне бы только с первым разобратся, а дальше надеюсь пойму.
<table cellspacing="1" cellpadding="2" border="0" style="font-size:10px; font-family:Tahoma, Arial, Helvetica, sans-serif;">
<tr bgcolor="#657FAB" style="color:#FFFFFF; font-size:10px; font-weight:bold; font-family:Tahoma, Arial, Helvetica, sans-serif;">
<td colspan="2" align="center">Symbol</td>
<td align="center">Bid</td>
<td align="center">Ask</td>
</tr>
<tr bgcolor="#EAEBEE" class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">EURUSD</td>
<td width="40" align="right"><div class="down">1.2961</div></td>
<td width="40" align="right"><div class="down">1.2963</div></td>
</tr>
<tr class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">USDCHF</td>
<td width="40" align="right"><div class="down">1.2448</div></td>
<td width="40" align="right"><div class="down">1.2452</div></td>
</tr></td></table>
|
| |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 18:10)
| | да, я просто не так понял :). вообщем выражение должно выглядеть как-то так:
"/.*(<div class=\"down\">){1}(.*)(<\/div>){1}.*/i"
это для первого.. видимо его надо просто надставить раз 7-мь (по кол-ву значений) но это некрасиво :).или ..
О можно еще так :
ищем это значение, получаем, зачем с помошью рег. выражения затираем это место, и в цикл это :), ужасть, если что могу написатЬ, но завтра :), а я думаю до этого момента придложат более элегантное решение :) | |
|
|
|
|
|
|
|
для: Гость
(10.01.2007 в 18:36)
| | Гость если не сложно то пожалуйста напишите, я подожду. | |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 18:10)
| | Ну помогите кто нибудь а | |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 19:28)
| | Можно наверное таким выражением обработать текст и потом уже работать с массивом:
Получим массив
Array
(
[1] => Array
(
[0] => EURUSD
[1] => 1.2994
[2] => 1.2996
[3] => USDCHF
[4] => 1.2419
[5] => 1.2423
[6] => USDJPY
[7] => 119.18
[8] => 119.21
[9] => GBPUSD
[10] => 1.9384
[11] => 1.9388
)
)
|
Или же можно разбить текст на 4 куска и обрабатывать их по отдельности в цикле ... Но этот вариант по-моему лучше. | |
|
|
|
|
|
|
|
для: kasmanaft
(10.01.2007 в 20:22)
| |
$ptn = '#<div[^>]*>([A-Z]+)[^=]+=[^<]+<div[^>]*>([.0-9]+)[^=]+=[^<]+<div[^>]*>([.0-9]+)#s';
$res = preg_match_all($ptn, $x, $out, PREG_SET_ORDER);
foreach($out as $key => $val) unset($out[$key][0]);
echo '<pre>';
print_r($out);
|
Array
(
[0] => Array
(
[1] => EURUSD
[2] => 1.2961
[3] => 1.2963
)
[1] => Array
(
[1] => USDCHF
[2] => 1.2448
[3] => 1.2452
)
)
|
| |
|
|
|
|
|
|
|
для: Trianon
(10.01.2007 в 20:41)
| | Trianon, этого я и добиваюсь, спасибо Вам
я сделал так, но почему то ничего не появляется совсем!!
<? php
$x = '<table cellspacing="1" cellpadding="2" border="0" style="font-size:10px; font-family:Tahoma, Arial, Helvetica, sans-serif;">
<tr bgcolor="#657FAB" style="color:#FFFFFF; font-size:10px; font-weight:bold; font-family:Tahoma, Arial, Helvetica, sans-serif;">
<td colspan="2" align="center">Symbol</td>
<td align="center">Bid</td>
<td align="center">Ask</td>
</tr>
<tr bgcolor="#EAEBEE" class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">EURUSD</td>
<td width="40" align="right"><div class="down">1.2961</div></td>
<td width="40" align="right"><div class="down">1.2963</div></td>
</tr>
<tr class="text">
<td><img src="img/down.gif" width="12" height="12"></div></td>
<td width="50"><div class="down">USDCHF</td>
<td width="40" align="right"><div class="down">1.2448</div></td>
<td width="40" align="right"><div class="down">1.2452</div></td>
</tr></td></table> ';
$ptn = '#<div[^>]*>([A-Z]+)[^=]+=[^<]+<div[^>]*>([.0-9]+)[^=]+=[^<]+<div[^>]*>([.0-9]+)#s';
$res = preg_match_all($ptn, $x, $out, PREG_SET_ORDER);
foreach($out as $key => $val) unset($out[$key][0]);
echo '<pre>';
print_r($out);
?>
|
Где ошибка? | |
|
|
|
|
|
|
|
для: ExtreMall
(10.01.2007 в 23:25)
| | Что значит пробел в первой строке?
| |
|
|
|
|
|
|
|
для: Trianon
(10.01.2007 в 23:54)
| | Спасибо, совсем уже ослеп :-)
Все работает, спасибо ВСЕМ!! | |
|
|
|