Соответствие регулярному выражению - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь получить данные от всех div с ценой в них в следующем разделе кода:

<section data-v-7630ac7c="" view-more-component="">
<div data-v-5c5571e4="" table-component="" data-v-7630ac7c="">
<header data-v-5c5571e4="">
<div data-v-5c5571e4="" price="" right-align="">Price</div> 
<div data-v-5c5571e4="" quantity="" right-align="">Quantity</div> 
<div data-v-5c5571e4="" date="">Time</div></header> <section data-v-5c5571e4="">
<div data-v-5c5571e4="" price="" right-align="" style="color: rgb(142, 201, 25);">8611.00</div> 
<div data-v-5c5571e4="" quantity="" right-align="">1.00000000</div> 
<div data-v-5c5571e4="" date="">13:27:17</div></section><section data-v-5c5571e4="">
<div data-v-5c5571e4="" price="" right-align="" style="color: rgb(142, 201, 25);">8612.30</div> 
<div data-v-5c5571e4="" quantity="" right-align="">1.00000000</div> 
<div data-v-5c5571e4="" date="">13:03:12</div></section><section data-v-5c5571e4="">
<div data-v-5c5571e4="" price="" right-align="" style="color: rgb(255, 42, 104);">8517.70</div> 
<div data-v-5c5571e4="" quantity="" right-align="">0.04983464</div> 
<div data-v-5c5571e4="" date="">12:51:24</div></section><section data-v-5c5571e4="">
<div data-v-5c5571e4="" price="" right-align="" style="color: rgb(142, 201, 25);">8608.70</div> 
<div data-v-5c5571e4="" quantity="" right-align="">0.59195657</div> 
<div data-v-5c5571e4="" date="">12:32:26</div></section><section data-v-5c5571e4="">
<div data-v-5c5571e4="" price="" right-align="" style="color: rgb(255, 42, 104);">8521.70</div> 
<div data-v-5c5571e4="" quantity="" right-align="">0.02990000</div> 
<div data-v-5c5571e4="" date="">11:29:57</div></section><section data-v-5c5571e4="">
<div data-v-5c5571e4="" price="" right-align="" style="color: rgb(142, 201, 25);">8545.20</div> 
<div data-v-5c5571e4="" quantity="" right-align="">0.26101049</div> 
<div data-v-5c5571e4="" date="">01:20:35</div></section><section data-v-5c5571e4="">
<div data-v-5c5571e4="" price="" right-align="" style="color: rgb(255, 42, 104);">8462.30</div> 
<div data-v-5c5571e4="" quantity="" right-align="">0.00674370</div> 
<div data-v-5c5571e4="" date="">23:49:47</div></section><section data-v-5c5571e4="">
<div data-v-5c5571e4="" price="" right-align="" style="color: rgb(142, 201, 25);">8539.30</div> 
<div data-v-5c5571e4="" quantity="" right-align="">0.05799985</div> 
<div data-v-5c5571e4="" date="">23:00:53</div></section><section data-v-5c5571e4="">
<div data-v-5c5571e4="" price="" right-align="" style="color: rgb(255, 42, 104);">8446.00</div> 
<div data-v-5c5571e4="" quantity="" right-align="">0.02345439</div> 
<div data-v-5c5571e4="" date="">22:30:43</div></section><section data-v-5c5571e4="">
<div data-v-5c5571e4="" price="" right-align="" style="color: rgb(255, 42, 104);">8540.00</div> 
<div data-v-5c5571e4="" quantity="" right-align="">0.25500001</div> 
<div data-v-5c5571e4="" date="">21:55:28</div></section></div> 
<section data-v-7630ac7c="" id="my-trades"><div data-v-75ce2ffa="" data-v-7630ac7c="" button-component="" class="viewmore fullbutton">
<button data-v-75ce2ffa=""></button> 
<!----> <span data-v-75ce2ffa="" text="">View More</span> <!----></div> <!----></section> <!----> <!----></section> <!---->

Используемое мной регулярное выражение:

<div (..................) price="" (.*)">(.*)<\/div>

Но я продолжаю получать NULL.Любая помощь будет по достоинству оценена.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Я пробовал оба они не работали, вот весь код, который я использую

<?
$curl = curl_init();
$SearchString = "BTCCAD";
$url = "https://einstein.exchange/trade?mode=advanced&instrument=$SearchString";
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
$result = curl_exec($curl);
preg_match_all('<div[^>]+price=\"\"[^>]+>([\d.]+)<',$result,$matches);
var_dump($matches);
curl_close($curl);
?>
0 голосов
/ 25 октября 2018

Хотя синтаксический анализ html с помощью регулярных выражений настоятельно не рекомендуется, размещенный html-код содержит только теги div без вложенности, поэтому вы можете применять это простое регулярное выражение и выполнять свою работу по получению всех цен из тегов div:

<div.*?price.*?>(\d+\.\d+)<\/div>

Носохраните это как временное исправление, и если вам придется использовать его в долгосрочной перспективе, перейдите к анализатору html.

Демо,

https://regex101.com/r/JBwRM5/1

...