Znowu mnie reg exp dręczy. Jest problem z https://regexr.com/4v2vn
Powinno brać z tego fragmentu tylko to co ma klucz url
a nie np. thumb
Problem też w tym, że jest tam wiele tych wartości z kluczem url potrzebuje ich wszystkich.
Znowu mnie reg exp dręczy. Jest problem z https://regexr.com/4v2vn
Powinno brać z tego fragmentu tylko to co ma klucz url
a nie np. thumb
Problem też w tym, że jest tam wiele tych wartości z kluczem url potrzebuje ich wszystkich.
Te dane wejściowe wyglądają zupełnie jak json. Czemu nie działasz na tym jak na jsonie żeby uzyskać wartość kluczy url?
Chcesz uzyskać cały URL czy masz coś przerabiać?
@jurek1980: Dane mam w postaci plain html, potem parsuje wyszukując odpowiedni <script>
, potem wydobyłem już to jednym preg_match()
teraz muszę mieć wszystkie url tego ciągu co w przykładzie.
Nie znam się na regexie, ale https://regex101.com/r/jmQvrH/1 chyba działa.
https://ideone.com/6P7B7h
Zwróć uwagę na brakujący początek tego jsona {"
:
<?php
$json = '{"data":[{"url":"https:\/\/d-gr.ppstatic.pl\/kadry\/k\/r\/gr-ogl\/24\/80\/2613984_202115698_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg","thumb":"https:\/\/d-gr.ppstatic.pl\/kadry\/k\/r\/gr-ogl\/24\/80\/2613984_202115698_mieszkanie-warszawa-bialoleka-ul-swiatowida_small.jpg"}]}';
$decoded = json_decode($json);
$data = $decoded->data;
foreach ($data as $row){
var_dump($row->url);
}
Można spróbować jakiegoś lookahead,(?=,)
, żeby nie łapać wszystkiego:
https://regex101.com/r/Yoo1LB/2
PS A tak w ogóle, to to wcale nie wygląda jak JSON ;-)
EDYCJA: Źródło:
https://www.regular-expressions.info/lookaround.html
https://duckduckgo.com/?q=is+PHP+regex+lookahead&t=canonical&ia=web
@lion137: Tak wygląda cały <script>
https://pastebin.com/653JWvq8 muszę z niego wyciągnąć url od pełnych obrazków. Wyrażenia wydawały mi się najprostszym rozwiązaniem, ale jedynek nie jest tak łatwo.
W regexr.com/4v390 działa w php: https://i.imgur.com/mKw80YI.png
Czyli regexr.com zwraca prawidłowo 15
wyników, a po przeniesieniu tego do PHP
jest tylko jeden wynik? To Wrzuć cały kod i niech ktoś kto się w tym czymś orientuje sprawdzi.
Nie mówiłem, że to JSON.
Przecież Widzisz tam uśmiechniętą mordę :) - czyli żarcik.
@lion137: Tak wygląda cały <script> https://pastebin.com/653JWvq8 muszę z niego wyciągnąć url od pełnych obrazków. Wyrażenia wydawały mi się najprostszym rozwiązaniem, ale jedynek >nie jest tak łatwo.
regex101.com dalej zwraca 15
wyników:
https://regex101.com/r/Yoo1LB/3
@lion137: Zerknąłbyś na mój kod? https://pastebin.com/FLQ3eaTt + parser z https://simplehtmldom.sourceforge.io/
CodeRZ napisał(a):
@lion137: Zerknąłbyś na mój kod? https://pastebin.com/FLQ3eaTt + parser z https://simplehtmldom.sourceforge.io/
Napisalem, że nie umiem tego czegoś (PHP), chyba lepiej, żeby ktoś bardziej kumaty ode mnie rzucił okiem.
@jurek1980: Dziękuje Ci bardzo! Twój sposób jest najlepszy, dałem do dekodowania json i śmiga.
<?php
include_once('./../parser/simple_html_dom.php');
$details = file_get_html("https://gratka.pl/nieruchomosci/mieszkanie-warszawa-bialoleka-ul-swiatowida/oi/2613984");
$scripts = $details->find("script");
$photos = $scripts[32]->innertext;
preg_match('/dataJson\s*:\s*([^\]]+)/', $photos, $photos_matches);
if(isset($photos_matches)){
$photos_matches = "{\"".$photos_matches[0]."]}";
$photos_matches = explode("dataJson: [",$photos_matches);
$decoded = json_decode($photos_matches[1]);
$data = $decoded->data;
foreach ($data as $row) {
echo "<br>".$row->url;
}
}
efekt:
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202115698_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202115860_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202116014_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202116214_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202116318_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202116418_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202116522_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202116634_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202116738_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202116822_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202117190_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202117330_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202117490_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202117648_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg
https://d-gr.ppstatic.pl/kadry/k/r/gr-ogl/24/80/2613984_202117794_mieszkanie-warszawa-bialoleka-ul-swiatowida_xlarge.jpg