Всем привет. В общем есть пага на пхп, а в ней между тегами <body></body> выводятся резерв валют. Вот так: Code: <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> Далее есть парсер этой страницы: Code: <? //Парсинг резервов //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]?
PHP: <? //Парсинг резервов //WMZ, WMR, WME, WMU, WMB, Яндекс.Деньги, RBK Money, Z-Payment $file = file_get_contents("тра-лял-ля урл"); preg_match ('/aOutLmtValue\\[2[^\'|"]*[\'|"]([^\'|"]*)/', $file, $m); echo $m[1]; ?> Как то так. Если я правильно понял выдирать нужно только последний результат... если все то скажи или сам допиши если понимаешь как
Мда... все да не все Кто поможет от меня 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, ну то есть одной цифре. Кто поможет?
Мдя, * - квантификатор, означающий ноль или более вхождений ? - квантификатор, означающий ноль либо одно вхождение, квантификатор жадности да спецсимволы то слешировать надобно - []. #aOutLmtValue\[\d+\]\s*=\s*'(.*)';#s
Как конкретизировать данные? d+ выводит массив, а мне необходимо выборочные данные 22, 26, 3 там например.
PHP: preg_match_all ('/aOutLmtValue\[(0|2)\]\s*=\s*\'(\d+\.\d{2})\';/', $str, $m); print_r ($m[2]); В регулярке поменять (0|2) на свои цифры, к примеру, (22|26|3)
смысла проблемы не понел =\ PHP: preg_match_all("#aOutLmtValue\[(0|1|2)\]\s=\s'(.+)';#i", $file, $m); print_r($m[2]); или если тут aOutLmtValue[2] может быть любая цифра, то так: PHP: preg_match_all("#aOutLmtValue\[[0-9]+\]\s=\s'(.+)';#i", $file, $m); print_r($m[1]);