Я пытаюсь использовать два preg_match
, чтобы получить два конкретных значения из исходного кода html
.
<?php
$url = "http://www.example.com";
$userAgent="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1";
$ch = curl_init();
curl_setopt($ch,CURLOPT_USERAGENT,$userAgent);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_AUTOREFERER,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_TIMEOUT,10000000);
$html = curl_exec($ch);
preg_match('~<span class="first">(.*)<\/span>~msU',$html,$matching_data);
preg_match('~<span class="second">(.*)<\/span>~msU',$html,$matching_data2);
print_r($matching_data);
print_r($matching_data2);
?>
Учитывая, что переменная $html
содержит следующую последовательность:
<title>foobar title</title>
<body>
<div class="second">Not this one</span>
<div>
<span class="first">First</span>
<span class="second">this one<span>
</div>
</body>
Если я запускаю свой код php
, первый print_r
возвращает правильное значение: <span class="first">First</span>
.Но вторая print_r
вместо возврата <span class="second">this one<span>
возвращает <div class="second">Not this one</span>
.
Так что я предполагаю, что функция preg_match
начинает обработку с начала, а не с последнего вызова preg_match
.
Как я могу сделать второй (третий, четвертый и т. Д.) Вызов preg_match
, выполняемый при последнем вызове?
Спасибо,
С уважением.