Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Парсинг кода не пашет, у кого какие будут мысли? |

21.05.2009, 09:25
|
|
Познающий
Регистрация: 19.10.2007
Сообщений: 31
Провел на форуме: 103648
Репутация:
4
|
|
Парсинг кода не пашет, у кого какие будут мысли?
Всем привет.
В общем есть пага на пхп, а в ней между тегами <body></body> выводятся резерв валют. Вот так:
Код:
<form action='index.php' method='post'>
<script language="JavaScript" src="scripts/common.js" type="text/javascript"></script>
<script language="JavaScript" type="text/javascript"> <!-- var aName = new Array();
var aIncCnt = new Array();
var aOutCnt = new Array();
var aOutLmtValue = new Array();
aName[0] = 'PCR_RuPayR';
aIncCnt[0] = '1.00';
aOutCnt[0] = '0.94';
aOutLmtValue[0] = '86754.48';
aName[1] = 'PCR_WMR';
aIncCnt[1] = '1.00';
aOutCnt[1] = '0.86';
aOutLmtValue[1] = '1100000.00';
aName[2] = 'PCR_WMZ';
aIncCnt[2] = '1.00';
aOutCnt[2] = '0.027';
aOutLmtValue[2] = '39000.00';
-->
</script>
Далее есть парсер этой страницы:
Код:
<? //Парсинг резервов //WMZ, WMR, WME, WMU, WMB, Яндекс.Деньги, RBK Money, Z-Payment
$file = file_get_contents("тра-лял-ля урл");
preg_match ('#aOutLmtValue[2]=([^"]*)#is',
$file, $m);
echo $m[1];
?>
Извиняюсь за нубский вопрос, что здесь не так?
Как можно вывести значение 39.000 переменной из массива aOutLmtValue[2]?
|
|
|

21.05.2009, 09:55
|
|
Участник форума
Регистрация: 13.11.2007
Сообщений: 180
Провел на форуме: 1058585
Репутация:
122
|
|
PHP код:
<? //Парсинг резервов //WMZ, WMR, WME, WMU, WMB, Яндекс.Деньги, RBK Money, Z-Payment
$file = file_get_contents("тра-лял-ля урл");
preg_match ('/aOutLmtValue\\[2[^\'|"]*[\'|"]([^\'|"]*)/', $file, $m);
echo $m[1];
?>
Как то так. Если я правильно понял выдирать нужно только последний результат... если все то скажи или сам допиши если понимаешь как
|
|
|

21.05.2009, 11:10
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
PHP код:
preg_match_all ('/aOutLmtValue\[\d+\] = \'([^\']+)\'/', $str, $m);
print_r ($m[1]);
|
|
|

21.05.2009, 14:17
|
|
Познающий
Регистрация: 19.10.2007
Сообщений: 31
Провел на форуме: 103648
Репутация:
4
|
|
Спасибо, ребят за оперативность, все заработало.
|
|
|

23.05.2009, 09:04
|
|
Познающий
Регистрация: 19.10.2007
Сообщений: 31
Провел на форуме: 103648
Репутация:
4
|
|
Мда... все да не все 
Кто поможет от меня 5 WMZ за потраченное время.
Трабл такой:
1) Когда допустим значение [x] = 21 или 121, т.е. не одна цифра, а две или три, то выдает совсем не тот результат.
Кусок исходника с которого нужно парсить инфу:
aName[22] = 'PCR_WMZ';
aIncCnt[22] = '1.00';
aOutCnt[22] = '0.027';
aOutLmtValue[22] = '39000.00';
Вместо 39000.00 в общем вываливает 144000.00 или левые циферки.
Я конечно понимаю, что собака зарыта здесь:
preg_match ('/aOutLmtValue\\[22[^\'|"]*[\'|"]([^\'|"]*)/', $file, $m);
Но честно говоря с регепсами сталкиваюсь в первые и такое количество знаков пунктуации вообще не осиливает мозг.
2) Берем другую переменную, например
aOutCnt[22] = '0.027';
Парсим так я уже понимаю:
preg_match ('/aOutCnt\\[22[^\'|"]*[\'|"]([^\'|"]*)/', $file, $m);
Пытаюсь вывести значение этой переменной, выдает также левые цифры, причем даже когда [x]=2, ну то есть одной цифре.
Кто поможет?
Последний раз редактировалось ruslant; 23.05.2009 в 09:07..
|
|
|

23.05.2009, 09:28
|
|
Постоянный
Регистрация: 16.04.2008
Сообщений: 889
Провел на форуме: 12942062
Репутация:
1550
|
|
preg_match ("|OutLmtValue[22] = '(.*?)'|is", $file, $m);
и не парь мозг)
|
|
|

23.05.2009, 10:07
|
|
Постоянный
Регистрация: 06.02.2008
Сообщений: 494
Провел на форуме: 1754802
Репутация:
380
|
|
Сообщение от wildshaman
preg_match ("|OutLmtValue[22] = '(.*?)'|is", $file, $m);
и не парь мозг)
Мдя,
* - квантификатор, означающий ноль или более вхождений
? - квантификатор, означающий ноль либо одно вхождение, квантификатор жадности
да спецсимволы то слешировать надобно - [].
#aOutLmtValue\[\d+\]\s*=\s*'(.*)';#s
|
|
|

23.05.2009, 10:59
|
|
Познающий
Регистрация: 19.10.2007
Сообщений: 31
Провел на форуме: 103648
Репутация:
4
|
|
#aOutLmtValue\[\d+\]\s*=\s*'(.*)';#s
Как конкретизировать данные?
d+ выводит массив, а мне необходимо выборочные данные 22, 26, 3 там например.
|
|
|

23.05.2009, 11:01
|
|
Познающий
Регистрация: 19.10.2007
Сообщений: 31
Провел на форуме: 103648
Репутация:
4
|
|
preg_match ("|OutLmtValue[22] = '(.*?)'|is", $file, $m);
выдает левый резалт, даже со слешами 
Думаю РаСо прав насчет квантификаторов.
|
|
|

23.05.2009, 11:04
|
|
Познающий
Регистрация: 19.10.2007
Сообщений: 31
Провел на форуме: 103648
Репутация:
4
|
|
5 WMZ актуально! Немного, но стимул есть найти решение 
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|