Dzień dobry wszystkim
wiążę się z niesamowitym problemem :)
Najpierw streszczę słownie później podam kod z opisem.
Pragnę pobrać za pomocą CURL kilka informacji z wielu stron.
Zrobiłem kilka znaczników div i do nich ładuję oskalpowane strony za pomocą preg_match_all
Chciałem bardziej to zoptymalizować i użyć do tych operacji funkcję do której będę się odwoływał.
Na samym początku do funkcji wrzuciłem sam kod CURL który pobiera zawartość danej strony.
Do tej funkcji odwołuję się z tych div-ów i działa !
<?php
function pobieranie($www)
{
//pobieram kod strony z podanego https
$curl = curl_init($www);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$strona = curl_exec($curl);
curl_close($curl);
return $strona;
}
?>
Jednak chciałem do tej funkcji dodać także Preg_match_all które powatażają się w tych div-ach i ... zaczyna się problem.
Wykonuje się tylko pierwszy div a reszta w ogóle.
Jak wyrzuce pierwszy div to wykona się drugi i trzeci już nie chce...
<?php
function funkcja($www,$wyrazenie1,$wwyrazenie2,$wwyrazenie3,$znaczniki){
//pobieram kod strony z podanego https
$curl = curl_init($www);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
$strona = curl_exec($curl);
curl_close($curl);
//usuwam zbędne znaczniki z wyjątkiem znacznika <a>
function czyste($e){return trim(strip_tags($e,'<a>'));}
//wybieram wszystkie tabelki
if(preg_match_all($wyrazenie1,$www,$wynik)){
foreach($wynik[1] as $i => $klasa){
//z tabelek wybieram wszystkie znaczniki z klasą KLASA2
if(preg_match_all($wyrazenie2,$wynik[1][$i],$wynik3)){
foreach($wynik3[1] as $i3 => $klasa3){
echo $wynik3[1][$i3];
}
}
//z tabelek wybieram wszystkie znaczniki <a> ze znaczników h3
if(preg_match_all($w3,$wynik[1][$i],$wynik2)){
foreach($wynik2[1] as $i2 => $klasa2){
echo czyste($wynik2[1][$i2]);
}
}
}
}
//uwalniam zmienne
unset($curl,$strona,$www,$wyrazenie1,$wyrazenie2,$wwyrazenie3,$wynik,$klasa,$wynik2,$klasa2,$wynik3, $klasa3);
}
?>