Second Opinion
Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale. Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit. www.neurohope.ro |
Preg_Match_All din Json
Last Updated: Apr 25 2023 15:55, Started by
phpguru
, Apr 25 2023 00:18
·
0
#1
Posted 25 April 2023 - 00:18
Salut,
Am o sursa json (link) si as vrea sa o extrag cu preg_match_all conform codului de mai jos. Cu json l-am facut insa incarca greu deoarece codul are peste 5k linii, iar cu preg_match_all incarca instant. Codul este cam asa: {"tara":"ro","oras":"Bucuresti","tip":"TEST 1","descriere":"LINIA 1"}, {"tara":"ro","tip":"TEST 2","apropiere":"ILFOV","descriere":"LINIA 2"} In linia TEST1 apare "oras", iar in linia TEST 2 apare "apropiere". Nu reusesc sa extrag "oras" si "apropiere" atunci cand exista, sa le afiseze doar daca exista. |
#2
Posted 25 April 2023 - 02:06
Pare un job pentru NodeJS.
Mai intai trebuie sa parsezi JSON-ul asta in obiecte / array PHP si dupa aia sa traversezi si sa verifici cu array_key_exists. |
#4
Posted 25 April 2023 - 10:24
Turcalet, on 25 aprilie 2023 - 02:06, said:
Pare un job pentru NodeJS. Mai intai trebuie sa parsezi JSON-ul asta in obiecte / array PHP si dupa aia sa traversezi si sa verifici cu array_key_exists. robert23mg, on 25 aprilie 2023 - 06:21, said:
Nu chiar, pt ca intre oras si apropiere ai tip. Cu celelalte cum ramane? Tara, descriere si tip?
|
#5
Posted 25 April 2023 - 10:50
function curl( $url ) { $ua = ["Mozilla/5.0 (Macintosh; Intel Mac OS X 12_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 Edg/100.0.1185.39", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36 OPR/86.0.4363.23", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"] ; $agent = $ua[mt_rand( 0, count( $ua ) - 1 )] ; $curl = curl_init() ; curl_setopt( $curl, CURLOPT_URL, $url ) ; curl_setopt( $curl, CURLOPT_REFERER, $url ) ; curl_setopt( $curl, CURLOPT_AUTOREFERER, true ) ; curl_setopt( $curl, CURLOPT_USERAGENT, $agent ) ; curl_setopt( $curl, CURLOPT_HEADER, false ) ; curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true ) ; curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true ) ; curl_setopt( $curl, CURLOPT_MAXREDIRS, 10 ) ; curl_setopt( $curl, CURLOPT_NOSIGNAL, true ) ; curl_setopt( $curl, CURLOPT_TIMEOUT_MS, 5000 ) ; curl_setopt( $curl, CURLOPT_CONNECTTIMEOUT_MS, 5000 ) ; curl_setopt( $curl, CURLOPT_SSL_VERIFYHOST, 0 ) ; curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false ) ; //curl_setopt( $curl, CURLOPT_FRESH_CONNECT, true ) ; curl_setopt( $curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 ) ; $result = curl_exec( $curl ) ; curl_close( $curl ) ; return $result ; } $curl = curl( "https://www.waze.ro/georss.php?top=45.9&bottom=24.9&right=30&left=20&nocache=" . microtime( true ) * 1000 ) ; preg_match_all( "#\"country\":\"RO\".+?(\"city\":\"(.+?)\".+?)?\"type\":\"ACCIDENT\".+?\"subtype\":\"(|(.+?))\".+?\"street\":\"(|(.+?))\".+?(\"nearBy\":\"(.+?)\".+?)?\"location\":{\"x\":(.+?),\"y\":(.+?)}.+?\"pubMillis\":(.+?)},{#si", $curl, $matches ) ; echo "<pre>" ; print_r( $matches ) ; echo "</pre>" ; city este oras si nu apare tot timpul, nearby este apropiere si nu apare tot timpul. Asa am incercat sa-l fac, insa imi afiseaza un singur rezultat, desi normal ar trebui sa-mi afiseze cate rezultate (tip ACCIDENT) sunt. |
#6
Posted 25 April 2023 - 13:10
@phpguru de ce nu merge sa parsezi tot cu `json_decode()` si sa treci cu un `foreach()` prin toate rezultatele? Am impresia ca doar te complici aici cu regex.
|
#7
Posted 25 April 2023 - 15:41
luckybastard, on 25 aprilie 2023 - 13:10, said:
@phpguru de ce nu merge sa parsezi tot cu `json_decode()` si sa treci cu un `foreach()` prin toate rezultatele? Am impresia ca doar te complici aici cu regex. - salvez informatia din link (extern) in local (pe site-ul meu), - setez un cron pt actualizare informatie cu interval de timp - in final parsez informatia cu json_decode direct din local. Anyway, multumesc. |
#8
Posted 25 April 2023 - 15:55
phpguru, on 25 aprilie 2023 - 15:41, said:
Json_decode nu afiseaza fisiere mari sau le afiseaza cu intarziere Nu prea inteleg cum ar veni asta. Acest link iti da un singur raspuns in format JSON, "json_decode()" se descurca destul de bine cu parsarea acestuia in timpi destul de ok. E prea mult sa faci asta la fiecare request (daca merge vorba de un web app aici, trebuie sa specifici mai exact contextul problemei) — da, probabil. Dar asta deja tine de cum iti organizezi tu solutia. Intrebarea initiala era despre parsarea propriu zisa a response-ului in format JSON dintr-un URL. E o idee foarte proasta sa incerci sa parsezi JSON-ul cu regex atunci cand solutia "oficiala" e mult mai flexibila si rapida, parerea mea. Spor! |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users